今天去一中,考了个模拟赛,真是坑。
本来在八中食堂愉快的享受我的早饭(周末早上的番茄鸡蛋烫饭+韭菜肉饼简直爽!),然后geng4512就跑过来说要去一中考试,然后两口喝完烫饭就和他一起狂跑过去了。
这次第一题组合数取模,模的不是质数。想了好大半天,没什么想法,然后看了下后面的题,又回来做这道题,想起了阶乘分解的勒让德公式,然后就做出来了,已经快到九点半了。
刚看到第二题,觉得应该是找规律之类的,想了5分钟没发现什么特殊性质,然后就想第三题去了。。
看到第三题刚开始没什么想法,因为它没给部分分,不是很好确定方向。然后看了下样例,发现花的时间是最多的一个机器人的时间,也就是说是一个最大值最小化的题,然后就确定是二分了。
本来想到了一个非常不错的算法:机器人做X部,任务做Y部,每个机器人向自己能胜任的任务连一条容量为1的边,从起点向每个机器人连一个容量为二分的时限的边,检查是否满流即可。但是这个复杂度太高了,并且他没给出部分数据。如果给出70%的数据N,M<1000我就直接上这个了,非常好写和保险。没办法,只有硬想贪心。。然后就想到了一个非常类似NOIP2012疫情控制的办法,排序后匹配,尽量把宽松的任务留给后来的机器人。但是这其中有很多细节,还有具体实现方法之类的,彻底想清楚之后,四十分钟就过去了。。然后就开始狂写代码,为了降低常数,set和堆什么的都没用,全程只用了sort,这就导致实现的时候不太方便,debug了很久,然后又检查了一段时间,然后就到11点20了。。
最后四十分钟,感觉第二题不是我的菜,并且这个时候人非常浮躁(主要是出去找厕所没找到),然后就不想做第二题了。。本来第二题想到了个指数级的做法,然后不想写,就乱用逆序对哈希了一下,结果就全WA了。。结果wja用这个指数级算法得了90分。。
这次第二题的算法是枚举+判断。我感觉这是我的弱项,因为判定型问题的思路一般是二分,朴素的枚举反而不适应。上次一中的第一题,就是枚举+贪心,当时花了20分钟才想出来。这回主要问题是做第二题时候没动脑筋,如果是逆序对之类的规律性的方法,数据范围一定不会只给100,所以一定是O(n)枚举+O(n^2)判定。以后遇到这种数据范围到大不小的,多半有可能是枚举。
这次完全是运气好,如果不是第三题A了的话,分低得还要难看些。。NOIP的时候还是要合理分配时间。