8_23 比赛总结 [暑假集训]
比赛地址:
http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=11955#overview
比赛总结:
今天的题看的第一眼觉得好难,一做才发现好水。既然题简单了,比赛就是比手速+代码实现能力了。Firework的手速还是不错,三个人在一台电脑上的切换也很灵活.D、E、K、J题,都是经过两个人的努力,最后过的,配合在中间起着重要作用。
总的说来,今天的节奏和配合都把握的不错。Firework的三个队员各有所长,整个队伍的战斗力来自于配合,可以说合作得如何决定着firework的成绩。
部分题目总结:
H Polynomial.差分序列。一次多项式序列的一阶差分序列是常数列;二次多项式序列经过一阶差分是一次多项式序列;三次多项式序列的一阶差分是二次多项式序列。。。
证明:设一次多项式序列是多项式C*n+D,在n=...1,2,3,...时的值组成的序列,对该序列做差分,得到差分序列,且通项为di = ( C*(n+1) + D ) - ( C*(n) + D ) = C。不难得出一阶序列的差分序列是常数列。
设二次多项式序列是二次多项式C*n*n + D*n + E,在n = ...,1,2,3,...时的值组成的序列,对该序列做一次差分,得到差分序列,且通项为 di = ( C*(n+1)*(n+1) + D*(n+1) + E) - ( C*n*n + D*n + E ) = 2C*n + C + D,不难看出这是一个一次多项式序列。
同样可以得到三次多项式的一阶差分序列是二次多项式序列。归纳可得一个不大于三次的多项式序列的三阶差分序列是一个常数列。
这道题在n <= 4时可以到到其总是有解的,在n>=4时,对原序列连续做三次差分运算,判断最后的序列是否是常数列即可。
C Counter attack.简单的dp。《算法导论》将动态规划那一章的第一个例子就是个类似的例子,可以参考。
E Hacking.字符串哈希。Hash方法选的是Rabin-Karp。长度为n(1<=n<=10000)的字符串做多有n-s+1个不同的长度为s的子串(s是满足包含至少n个不同值的k进制数的最少位数,因为一定有解,s<=m),数据量不大,上界是10000。对原串中每个长度为s的子串做k进制的哈希,hash值不会超过k^s - 1(上界<500000),对哈希值用一个flag数组记录,最后对1~k^s - 1的数查找未被记录的某一个数ans,对ans用k进制展开,并表示成字符串形式(0对应‘a’,1对应‘b’,etc)即是一个合法解。
J Two Ball Game.凸包水题。首先判断s1-t1和s2-t2的连线是否相交,如果不相交则输出“POSSIBLE”,否则跑一个凸包,如果s1、t1、s2、t2四个点都在凸包上则是“IMPOSSIBLE”,否则一定可以通过凸包绕道。
如果你有不同的思路欢迎告诉我^o^
posted on 2012-08-23 23:15 Lattexiaoyu 阅读(183) 评论(0) 编辑 收藏 举报