转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove
本来是要掉rate的,结果因为SB被取消资格了。。逃过一劫,不过下次估计要禁赛或者封号了,TAT
A :lying Saucer Segments
表示真心看不懂题,类似汉诺塔的问题,然后就直接YY个结论Fn=(3*Fn-1)+2,貌似是这样的吧
Fn=3^n-1。好吧,虽不明但觉厉地过了,差点爆0 。
B:Naughty Stone Piles
哈夫曼树,但是每一堆有一个叠加次数限制K。
可以考虑对于K很大,也就是没有限制的时候,我们是将重量递增排序,然后将前n-1轻的全部加到最重的上面 。
那么对于有限制K的。贪心
将除了最重的那K个重的,最终是叠加到最重的上面,然后对于除了这K+1个位置,也就相当于有K个位置,可以叠加,那么就再往前累计K*K个物品。
C:Anniversary
这题就不多说了,跪了全场,也让部分人CHA疯了的。
主要利用的以下性质
斐波那契数列的整除性与素数生成性
每3个数有且只有一个被2整除,
每4个数有且只有一个被3整除, 每5个数有且只有一个被5整除, 每6个数有且只有一个被8整除, 每7个数有且只有一个被13整除, 每8个数有且只有一个被21整除, 每9个数有且只有一个被34整除, .......另外注意不能二分,自己想反例吧,不是单调的
补充一下:比较说[1000,2000] 999的倍数只有一个,1000的倍数有两个,所以不能二分
然后为什么只需要枚举sqrt(r)呢,在适牛的教导下终于明白了
我们对于某一个x,需要满足r/x-(l-1)/x>=k,需要找出最大的x
首先r/x是只有sqrt(r)级别个的,而对于r/x==y的所有x中,r/x-(l-1)/x随着x的增大而增大,也就是局部单调,那么我们只需要判断最大的x是否满足>=k即可,这样既是满足>=k,又是最大的x
D:The table
一开始想法就对了,结果去跪了全场的C,哭~~~
贪心,每次选择sum最小的行或者列去置反,然后更新一下所有的行的和以及所有列的和
注意不能标记,也就是某一行某一列可能置反两次然后抵消的
直至所有的行和列都满足为止