摘要: n<=1000,m<=30000的图,问割掉边权和尽量小的0、1或2条边使S和T不连通,输出割了哪些边,无解-1. 道理是很好懂的,先随便找S到T的一条路径,找不到输出0,找到的话这条路上至少有一条边要删,那枚举一下割谁,对剩下的图再做tarjan即可。复杂度(n*m)。 然而!!写起来是很难写的。 阅读全文
posted @ 2018-01-08 21:56 Blue233333 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 一开始有一空串,n次操作,每次在串末尾加入一个字符问最小循环节。要求在线与可持久化。 如果只是在线的话那是很简单的,答案是!!$i-fail[i]$,其中$fail[i]$是KMP中的失配函数。 但如果可持久化的话: 一、复杂度难保,因为过程不连贯,没法用普通KMP那种复杂度的证明。 二、给出的字符 阅读全文
posted @ 2018-01-08 10:42 Blue233333 阅读(743) 评论(1) 推荐(0) 编辑
摘要: t<=5次询问每次问一个<=1e6的串的$\sum_{i=1}^{n} (num_i+1)$,其中num[i]表示既是前缀i的前缀又是前缀i的后缀且这两部分不重叠的子串的数量。 方法一:在KMP树上倍增!吃枣药丸+tle+制杖 方法二:开另一个数组记下每个点在KMP树中的深度,另外开一个指针记下“前 阅读全文
posted @ 2018-01-08 09:29 Blue233333 阅读(313) 评论(0) 推荐(0) 编辑
摘要: n<=500,n*n的矩阵,m<=60000个询问每次问子矩阵第K小。 方法一:第K小什么的是可以二分的,那就整体二分套二维树状数组吧! 这里有一个细节优化,本来整体二分是logMax的嘛,可以先把数字排个序,就变成logn了。这是没优化的后果(话说3个log确实极卡) 方法二:分块,n*n个数字从 阅读全文
posted @ 2018-01-08 08:39 Blue233333 阅读(171) 评论(0) 推荐(0) 编辑
摘要: n<=50000个vector进行m<=50000次操作:1、一区间的vector插入一个数;2、查询一区间中的vector中的所有数的第k大。 方法一:普通线段树套权值线段树!…… 方法二:单个询问是可以二分的,那就整体二分吧。这次是用线段树维护,把所有数字反过来求第k小再反过来就是第k大,注意5 阅读全文
posted @ 2018-01-08 07:36 Blue233333 阅读(165) 评论(0) 推荐(0) 编辑