摘要:
题目链接 Link cut tree 维护size和两个标记即可 黄学长告诉我long long 会T…… 上面long long 下面unsigned…… 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #inclu 阅读全文
摘要:
题目链接 link cut tree 比bzoj2049多维护一个size 注意查询之前要把n+1reverse一下,保证答案正确性 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 阅读全文
摘要:
link cut tree入门题 首先说明本人只会写自底向上的数组版(都说了不写指针、不写自顶向下QAQ……) 突然发现link cut tree不难写。。。 说一下各个函数作用: bool isroot(int x):判断x是否为所在重链(splay)的根 void down(int x):下放各 阅读全文
摘要:
题目链接 类似于找重心的写法,往牛多的那一头走(更优),直到找不到更优的 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #include< 阅读全文
摘要:
题目链接 AC自动机 由于输入的是恶心的数字,用了map强行带log…… 由于不清楚长度,用了vector强行增加时间…… 由于要判重,用了数组存下强行加常数…… 慢惨了 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 阅读全文
摘要:
题目链接 构造AC自动机 BFS更新答案 由于做完fail后有BFS序,直接用就可以了 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #i 阅读全文
摘要:
题目链接 如果可以按照一个循环节一直循环而不会被匹配到,那么就安全了 所以在AC自动机上找环就可以了 为什么会T呢?找环挂了,开两个bool数组快很多啊。。。涨姿势了 T掉代码: bool bo[30030]; bool dfs(int x) { bo[x]=1; re(i,0,1) { if(bo 阅读全文
摘要:
题目链接 先求拓扑序 现在要求一棵树,如果某一个结点消失,那么整棵子树都会消失 一个点能影响的只能是在拓扑序中比它靠前的,于是边往树中加点,就边求一个点在原图中连接的点的lca 为了保证这些点能受到当前要加入点的影响,就按拓扑序加点,最后dfs一遍找出子树大小 1 #include<algorith 阅读全文
摘要:
题目链接 AC自动机+DP 有点像GT考试,hh[i][j]表示第i为匹配到自动机上j号结点的方案数 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdi 阅读全文
摘要:
题目链接 每个子串都是一个后缀的前缀 每个后缀贡献的子串数目是len-sa[i]-height[i]; 因此可以二分找到一个子串的位置,要求某两个子串的最长公共前缀和最长公共后缀,把原串倒过再来一发就好,然后st表O(1)查询; 1 #include<algorithm> 2 #include<io 阅读全文