摘要: BZOJ2064 分裂 题面感人。。。 可以发现的是如果把所有的数先合起来,再把他们分开,这样是$ans$的上界,是$n+m 2$ 现在我们把之前的国家面积视作$+$,之后的国家面积视作$ $,就会发现如果有一个子集的sum=0,就说明我们可以让这个子集内部操作。 假设这个子集有$k$个数,它的操作 阅读全文
posted @ 2018-10-18 16:33 SWHsz 阅读(124) 评论(0) 推荐(0) 编辑
摘要: KMP+双向链表 由题意易知解必须满足的条件是解既是前缀也是后缀,然后就把所有的解打上标记,建出一棵fail树,然后发现如果这个串能作为解的话就是它的相邻两个之间的距离差不能超过其长度。 然后就可以用双向链表维护这个,记录一个mx表示最大差值即可。 cpp include include inclu 阅读全文
posted @ 2018-10-18 15:58 SWHsz 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 结论:\((fib_n,fib_m)\)=\(fib_{(n,m)}\) 证明:参考大佬的blog OrzCTY (我怎么记得以前板板讲过Orz 然后用矩阵快速幂随便做了。。。 #include <iostream> #include <cmath> #include <cstdio> #inclu 阅读全文
posted @ 2018-10-18 11:53 SWHsz 阅读(1156) 评论(3) 推荐(0) 编辑
摘要: bzoj1098 对于每个对点,如果他俩没有直接连边,就必须放在一个楼里,所以显而易见的就是要求补图的联通块。 但是没办法直接把补图建出来。 可以用链表来维护之间没有访问过的集合。 每次从未访问的点中选一个,找没访问的集合中不与他相连的点有哪些,然后删去这些点,表示已经访问过了,并且继续找他们没有访 阅读全文
posted @ 2018-10-18 09:52 SWHsz 阅读(113) 评论(0) 推荐(0) 编辑
摘要: yyl说是用链表O(n)做 但是并脑补不出来。 发现可以用个vector记录一下每个数出现的位置,然后对于每个新序列就二分一下,找下一个数出现的离当前位置最近的位置,更新一下当前位置即可。 时间复杂度O(∑ k log k)的,不用卡常也过了。。 #include <iostream> #inclu 阅读全文
posted @ 2018-10-18 08:59 SWHsz 阅读(159) 评论(0) 推荐(0) 编辑