这场题目总体难度不大,可是却把我虐翻了。
首先是D题在1小时半的时候,差不多就写好代码了,提交wa在第三组测试数据,按道理这么前面的数据应该很水的,而且我觉得我想的和我代码实现的功能相吻合,想到是题意理解问题,可是到最后一分钟也没想到问题在哪里。我觉得自己是前期的算法轮廓想得会快些,可是一旦初期算法错了就会很难调整,蛋疼啊。
还有,C题我写了一个很稳妥的O(n*m)的算法,可是实现略微麻烦,这题就应该用二分来实现的,这样代码简短很多,在追求简洁代码的路上我还有很长一段路要走。额,这不是重点,重点是这题应该是有很多人会去YY的,而且前面水数据是可以让一部分pre ac的,在D题纠结未果的时候就应该去hack,只能说自己太不会完CF了。
说下这套题目吧:
230 A. Dragons http://www.codeforces.com/problemset/problem/230/A
因为顺序任意,我们应该选择x较的先处理,设x1<x2,如果可以先处理x2,那么没差。如果处理不了x2,处理得了x1,那么肯定处理小的然后y累加上来再判断能否处理x2。这样的话对(x,y)按x排序,按顺序处理。复杂度O(nlogn)
231 B. T-primes http://www.codeforces.com/problemset/problem/230/B
只有三个因子的情况是1和它本身以及它的开根号整数,这个整数存在且这个开根号整数只有1和它本身做为因子,那么后者就是一个素数,这样就可以通过素数刷法预处理,然后O(n)处理。
229 A. Shifts http://www.codeforces.com/problemset/problem/229/A
枚举列,把每行移到1到这列的最少步数相加,求最小值。关键部分是求每行的最小步数,最简单且可行的做法是二分查找向右下标最小的那个1,再二分向左查找下标最大的那个1,这样复杂度O(n*m*log(m)),CF时限很宽松可以过。我的做法是用O(n*m)的时间去预处理,把每个位置左边第一个的1和右边第一个1的位置计算出来,预处理完O(n*m)枚举,O(1)计算步数。
229 B. Planets http://www.codeforces.com/problemset/problem/229/B
比较简单的Spfa,主要是到达如果某个时间到达v点的话,需要延迟,且延迟具有传递性,i时间到如果有限制,i+1才能登陆,如果i+1也有限制那么i+2,从后往前把每个出现的时间延迟到的时间计算处理,spfa的时候如果到达v点的时间需要延迟,把延迟时间计算进去再进行松弛。这题很诡异,出发点也需要延迟,而终点不需要延迟,就因为这坑爹的地方我一直没AC..
229 C. Triangles http://www.codeforces.com/problemset/problem/229/C
因为卡D题,这题没看,但目测不难,ac代码大部分不到40行。
很少写cf的解题报告,被虐爆虐爽的时候才写写,发发牢骚...
本文ZeroClock原创,但可以转载,因为我们是兄弟。