这次真是好开心,过了四题,rating涨了200,尽管还是没有超过1700.。。。。
这次比赛构造性算法和贪心算法比较多,有些需要提出一些猜想再进行证明,没有特别水的题目,都多少有一点思维含量。
A:只有三种情况:全部向左;全部向右;左边一连串向右的脚印,右边一连串向左的脚印。前两种都好说,最后一种,可以从右边出发,向左走,然后停在边界处即可。
B:注意到船是可以抛锚的,因此用贪心来解就好了,凡是靠近目标的就前进,远离目标的就抛锚。
C:这题很有意思,需要观察出一些结论来。注意到如果a中1的个数为偶数,那么无论怎么进行操作,1的个数都不会增加,只可能减少或者保持不变;如果1的个数为奇数,则至多会多出一个1来;而且,只要a中1的最多个数不小于b中1的个数,一定是可以构造出来的。
D:也是贪心法,如果Alice的鱼多,一定满足要求,否则进行排序,从最大编号开始算,如果Bob的编号不小于Alice就继续扫描,只要出现Alice的编号大于Bob编号的情况,就可以满足要求。
E:division 2里面每一个人做出来,我参考了tourist的,真是大神啊。。。。只要能想办法构造出2/3*n的unique序列来就可以了,构造方法并不唯一。关键是注意到s序列是unique的,因此s序列排序后,第i位置的数一定不小于i,这是很重要的一点。
至于源代码,codeforces上面可以直接看别人的源代码(点击提交编号即可),我就不贴了。
ps:还成功hack了两个人,通过读别人的代码,我强烈感觉到:很多人的思维方式好奇怪啊。。。明明很简单的事要弄得特别复杂,不理解。。。。