2009年3月29日星期日

市选总结

嗯嗯,这是我第一次写这种东西.....
总结一下,这次讯飞杯,好象是第一次在一中办,而且是第一次在一中新校区办.....
比赛激烈程度不高,开场前我就和ZYF讲,这次估计是一中队内赛了......
结果果然,变成了队内赛。我旁边两位小哥连PASCAL都用的不熟,其实第一题就是考会不会编程的.......简单Ad hoc,没难度啊。
还有比赛之前进场的时候出现了一点小插曲:WTJ和YK两个这一届最强的男人居然坐在一块.....(当然是隔一个人)imba!难保他们两个比赛时不窥屏。
好了,废话不多说,我们来分析一下题目;
首先是第一题,Ad hoc,难度为零,会编程的人都会,就不讲了。
题目二,O(n)的算法要懂一点脑筋,我写的O(n),估计很多人写的都是n^2级别的。同志们想想,1000的平方就是1E6,十万级别,最后一题的n^2我的程序都不能瞬秒,扩大100倍的运行时间估计1秒很难拿下......
其实o(n)就是开一个队列,队中元素就是所要累加的数,只要我发现队列中元素和大于n就让队首出队,和小于n就让下一个元素入队,保证了几乎没有冗余的循环,平摊分析应该是O(n),没仔细想过。
题目三是一道怪难的数学题.......估计也是这次比赛难度系数最高的一题了,其实题目意思很简单,就是给你n个数,问有几种不同的不等关系。想一想,如果把所有的数从小到大排列,等于的放到一起:
{a1=a2=……=ai} {ai+1=……=aj} …… {ak=ak+1=……=an}
把所有的相同数都归到一个集合里,这个集合就是一种划分,再把集合全排列,就是这样划分集合所对应的不等关系数目。
估计看到这里大部分人都明白了,就是所有集合划分方式乘上个集合数目的全排列数嘛。把n个数划分为k个集合.......第二类stirling数.......全排列......阶乘.........相乘........高精度乘法......
题目四,有点小难度的DP,其实也简单,因为乘积末尾的0是乘积的因数中有多少个10决定的,而最少有多少个10又是由最少有多少个2或者5决定的,所以.......简单了吧.
好了,目前就分析到这里,其他的就等官方成绩出来以后再写上吧。