2014.08.10 CH Round#49-Streaming#4(NOIP模拟赛Day2) 总结

传送门 :

http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP%E6%A8%A1%E6%8B%9F%E8%B5%9BDay2)

资料包:http://pan.baidu.com/s/1gdADrnd

这场比赛有很认真在做 累积的经验也不少。


T1 二叉树的根 

题意:给出(n-1)条边,选一个节点作为一颗二叉树的根,整棵树满足二叉树性质,这样的节点有多少个。

   一拿到题我还是遵循了我谨慎的特性【博主又在自夸了】,读了2 3遍题 自己先分析数据

   很显然 : 当一个点的度数>3 时 这棵树绝对无解 为什么?因为你无论选择哪个点作为根结点 这个点始终有3个或者以上的儿子 不满足二叉树性质。

   当一个点的度数=3时 这个点绝对不可能是根节点 。

   当一个点的度数<=2时 这个点可以成为根结点【一开始这只是我的一种猜测】

   我也不能严谨的证明 于是我就打了个暴力然后出数据对拍 在对拍多次之后发现无异才放心交。

   证明:模拟一下即可。


T2 距离统计

题意:给出n*m的点阵,求多少对点的距离为 l。 n,m范围为十亿。

对于20%的数据,n,m≤20,T≤10。

对于40%的数据,n,m≤1,000,T≤100。

对于60%的数据,n,m≤100,000。

对于100%的数据,n,m≤1,000,000,000,T≤1,000,l是在[1,2max(n,m)]内随机生成的。

这是一道非常有趣的题目。

对于横竖的边我们可以O(1)算出 ,主要问题在于 斜边。

问题转化为:给出三角形的斜边c,求出所有两直角边a,b可能的解。


观察数据范围:对于60%的数据,n,m≤100,000。

对于 N,M<=10W 的数据 还是非常好做的 直接暴力枚举a,用c*c - a*a 得到b*b 判断一下b是不是整数就好了。


对于100%的数据 还需要一堆证明。


这里引入几个结论:

一 、对于x^2 + y^2 = z^2,若gcd(x,y,z)=1,可证x,y,z两两互质

证: 若x = k*x1 y = k*y1 (k!=1) 则有 k^2*x1^2+y^2*y1^2=z^2=k^2*(x1^2+y1^2)

则gcd(x,y,z)为k。

二、在一的条件下,可证x,y异奇偶.

证: 若x,y同奇,则x=2p+1,y=2q+1,x^2+y^2=4p^2+1+4p+4q^2+1+4q

则z^2%4=2,所以2|z^2而不能4|z^2,那么z不是整数了。


用一和二 我们可以证明:

    对于x^2 + y^2 = z^2,若gcd(x,y,z)=1,那么z-x为完全平方数,或为一个完全平方数的两倍。

证:

为了方便设x为奇数,y为偶数。z也为奇数

        x^2=z^2-y^2=(z+y)(z-y) 设g=gcd(z+y,z-y)则g|z+y,g|z-y,所以g|2z, g|2y.

        因为已证y,z互质,则g=1或g=2,因为g|(z+y)(z-y),所以g|x^2,因为x^2为奇数,所以g为1.

        则z+y 和z-y 也是互质的。因为x^2为完全平方数,所以z+y和z-y都是完全平方数。


现在我们来证明z-x是完全平方数的两倍。有z+y=a^2,z-y=b^2,那么

ab = x,y = (a^2-b^2)/2, z = (a^2 + b^2)/2.

那么 z-x = (a-b)^2/2  有z-x为偶数 那么(z-x)/2为一个完全平方数,则z-x为一个完全平方数的两倍。

证毕。

得知这个结论。我们可以知道 2z = a^2 + b^2。

只要得知z,暴力枚举a,可知b,可算出x,y。枚举a的复杂度为根号级别,可以过。


现在就要保证x,y,z两两互质。

枚举输入的数的因数作为他们的最大公约数,在枚举一个互质的a,b 得解


本题还是需要一些数学功底的,像我这种比较菜的,只能写暴力。


T3 电阻网络

这题的意义就在于总结出题目大意,先上题目:


什么是电阻?这个大家应该都知道。什么是电路?大家也应该知道。但是本题当中,电路的定义或许有点不同:

电路都带有正、负极接点,正极在左,负极在右。具体地:电路分为以下几类:

单独的一个1Ω电阻(及其两端的接点)是电路。(虽然导线也可以被视为0Ω的电阻,但是单独的导线不是电路

如果A和B都是电路,设1,2,3是从左到右的三个接点,那么将A的正负极分别接在1与2上,将B的正负极分别接在2与3上,那么1到3的部分是电路,其中1为正极,3为负极。

如果A和B都是电路,设1,2,3,2',3',1'是六个接点,其中1在2和3的左侧,2在2'的左侧,3在3'的左侧,2'和3'在1'的左侧,并且1与2,1与3,2'与1',3'与1'间均连有导线,那么将A的正负极分别接在2与2'上,将B的正负极分别接在3与3'上,那么1到1'的部分是电路,其中1为正极,1'为负极。

现在给出一个电路,求它正负极之间的电阻。

对于20%的数据,n≤5。

对于50%的数据,n≤100。

对于70%的数据,n≤1,000。

对于100%的数据,n≤100,000,数据是在人工指定的$n$下随机生成的,保证答案不会超过10.000。



    一连串的题目描述看得人头晕眼花,一拿到题目你会惊讶:哇这个怎么算,要是有电桥怎么办?混联多了怎么算?信息学比赛怎么还会卡物理知识?!

    别急,慢慢看题。

    首先,这一题只有纯串联或者纯并联,一个点甚至不会直接连出两个电阻!Why?看题:

”电路都带有正、负极接点,正极在左,负极在右。具体地:电路分为以下几类:“

       也就是说 除了题目描述的3种电路 其他的全都不是电路!

        这样一来就可以暴力算了 。依次走一次就可以完美计算了。



    这次的比赛也是赤裸裸的打脸 明明260 只有160 。不要想当然的以为题目很难,沉下心,认真看题,再难的题总会有暴力的方法,暴力加优化说不定就是正解呢?

    如某位神牛说:“暴力可以让你走的很远。”

    

    这次比赛也是让我明白我在数论方面的知识的缺漏,要去好好学数学。

    


你可能感兴趣的:(2014.08.10 CH Round#49-Streaming#4(NOIP模拟赛Day2) 总结)