NOIP 2007 已经结束很长时间了,但是由于比赛之后一直比较忙,也比较担心获奖的情况,所以一直没有能对 NOIP2007 做一个总结,现在放假了,有了空闲的时间,来总结一下我的 NOIP 2007 。
首先说一下 NOIP 2007 对语言的使用和评测机器的要求吧。试题上有三条说明:
文件名(程序名和输入输出文件名)必须使用小写
C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
全国统一评测时采用的机器参考配置为:CPU 2.0GHz,内存256M。
第一个和第二个没有什么特别的,是大家应该能做到的,而且轻易能做到的。第三个说明评测机的配置不错,毕竟是 2.0GHz 的机器(比起 USACO 的 700MHz……),对于内存来说,这次进一步放宽了内存,成了 256MB ,而且没有说明程序最大使用多大的内存,所以除去操作系统使用的部分,大家的程序想开多大就开多大了,而不用顾及以前的 64MB 内存的限制。(希望我没有理解错)。山东省的省测更是搬出了一台服务器来进行评测,说明 NOIP 的机器配置已经很不错了。(省测这个可能也跟去年发生的一些事情有关)
拿到卷子,先发现的是卷子的样式跟以前的不一样了,个人比较喜欢 NOIP 2006 的样式,感觉那个更好用一些。(赛后看到电子版,竟然是 doc 文档,初赛题还是 pdf ,怎么复赛退化成 doc 了呢?)
再说一说题目吧。 NOIP 2007 的题目总体来说应该不算很难,可以说得上简单。(我都会做的题就是简单题……)所以 NOIP 2007 的一等奖分数线也就比较高了。
来说一下每个题目的具体情况吧。
第一题,统计数字( count )是一道说简单就简单,说难就难的题。我看完题,然后去看数据规模,看到最大是 200000 ,立即看到是个 O(NlogN)的题目,而且又是排序,没有多想,就写了了快排,还是调用标准库的 qsort() 函数,没几行就解决了,测了几个简单的数据,就 pass 了。
赛后,同学们说到有快排专杀数据的问题。我想了想,确实有这个问题,如果数据里有快排专杀的话,我的程序铁定过不了。同学们给出了他们的方法。有用 hash + qsort 的,复杂度 O(N+KlogK);有用堆排的,复杂度 O(NlogN);还有用二分查找(用于判重) [...]