上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 31 下一页
摘要: "传送门" 显然是求生成树 只有两种情况会导致no solution: 1、如何加边图都不连通 2、必须要加的鹅卵石边超过k条 首先可以一遍kruskal判断出必须要加的鹅卵石边是多少:优先加水泥路的边 然后将必须要加的鹅卵石边加上去,再多加几条边使鹅卵石边等于k条,再去加水泥路 最后判断图是否联通 阅读全文
posted @ 2019-03-05 19:27 蒟蒻--lichenxi 阅读(130) 评论(0) 推荐(0) 编辑
摘要: "传送门" 很容易看出是虚树吧,难点在于统计答案 可以考虑将虚树上的点预处理出来是由哪些关键点控制的 可以两次dfs初步处理一下(考虑下对上的影响和上对下的影响,但是兄弟节点之间的关系更新不到,需要在统计答案时更新一下) 然后考虑统计答案 考虑每个点$u$不在虚树中的儿子$v$,记它为size[v] 阅读全文
posted @ 2019-03-05 14:54 蒟蒻--lichenxi 阅读(146) 评论(0) 推荐(0) 编辑
摘要: "传送门" 解法一:后缀数组 T=0,就是求本质不同,后缀数组经典用法 T=1,二分解决 代码: 解法二:后缀自动机 后缀数组做这个题显然有些强人所难 所以我们用后缀自动机可以更简单的解决 我们知道后缀自动机可以$O(n)$求出每个子串的出现次数和不同字串的个数 将这两者同意一下就可以满足这个题目的 阅读全文
posted @ 2019-03-04 20:03 蒟蒻--lichenxi 阅读(105) 评论(0) 推荐(0) 编辑
摘要: "传送门" 模板集合吧,除了码农,没啥难的。。。 和 "bzoj2243:[SDOI2011]染色" 十分相像,但是多了点集和查询的区别 然后点集显然可以看出是虚树问题,查询可以用点分治$O(nlogn)$,也可以二次换根$O(n)$,显然二次换根$O(n)$更加优秀 然后码就是了 代码: c++ 阅读全文
posted @ 2019-03-04 17:08 蒟蒻--lichenxi 阅读(128) 评论(0) 推荐(0) 编辑
摘要: "传送门" 最小割,割点,模板。。。 代码: c++ include include include include include using namespace std; void read(int &x) { char ch; bool ok; for(ok=0,ch=getchar(); ! 阅读全文
posted @ 2019-03-03 20:11 蒟蒻--lichenxi 阅读(149) 评论(0) 推荐(0) 编辑
摘要: "传送门" AC自动机也可以写的啊,就是判断多了点,思路和KMP的挺像的 "具体的可以参考一下这一篇" 然后贴一个代码: c++ include include include include include include using namespace std; void read(int &x 阅读全文
posted @ 2019-03-03 18:30 蒟蒻--lichenxi 阅读(280) 评论(2) 推荐(0) 编辑
摘要: "传送门1449" "传送门2895" 平方很难处理,考虑剩下的比赛所有队全输(只能全输,全赢保证不了费用流的正确性),考虑计算每个队多赢一次的贡献 拆开: $c_i (x+1)^2+d_i (y 1)^2 c_i x^2 d_i y^2$ $=2 c_i x+c_i 2 d_i y+d_i$ 然后 阅读全文
posted @ 2019-03-03 13:07 蒟蒻--lichenxi 阅读(131) 评论(0) 推荐(0) 编辑
摘要: "传送门" 和学长刚,说自己能不写返回值为struct的query并且不写单点查询而AC此题,挣扎了半个小时还是改回去了 直接树链剖分,对于每个节点记一下最左边的和最右边的颜色以及区间内的颜色段数,区间合并一下就好了 对于查询的时候,也合并一下,跳链的时候注意看一下两条链相邻的颜色,判断一下 这个题 阅读全文
posted @ 2019-03-02 17:02 蒟蒻--lichenxi 阅读(128) 评论(0) 推荐(0) 编辑
摘要: "传送门" 这个题目和 "我的另一篇博客" 做法很像 做完那个几乎就会这个了吧 如果你不会,你可以继续往下看 实际上由于当前的数的sa不一定连续 所以需要求出任意两个的最长公共前缀 假设$x,y,y x$,就是$min\{height[x+1],...,height[y]\}$ 然后把原本的断开,把 阅读全文
posted @ 2019-03-02 14:07 蒟蒻--lichenxi 阅读(122) 评论(0) 推荐(0) 编辑
摘要: "传送门" 解法一:后缀数组 可以知道每一个子串都是后缀的前缀,那么对于第$i$小的后缀的贡献就可以表示为n sa[i]+1 然而会存在重复的子串,注意height数组的定义,对于sa[i 1]和sa[i],只有height[i]个子串会被重复计算,每次都减掉就好了 代码: c++ include 阅读全文
posted @ 2019-03-01 17:03 蒟蒻--lichenxi 阅读(108) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 31 下一页