摘要: #include using namespace std; const int maxn=500004; inline int read() { int x=0,w=1; char ch=getchar(); while (ch'9') { if(ch=='-') w=-1; ch=getchar(); } while (c... 阅读全文
posted @ 2019-01-08 12:28 WiFiMonster 阅读(182) 评论(0) 推荐(0) 编辑
摘要: Problem 1 1.带修改的主席树+平衡树,维护前驱:每修改一个数会导致三个数的前驱改变,对每个值开平衡树,存放每个值的位置在哪 2.分块,维护前驱,开一个数组表示每个块内排序后的结果,两边暴力,中间二分 O(2s+(N/s)*logs) s=sqrt(N*logN) 法二:f[i][j]为从i 阅读全文
posted @ 2019-01-08 09:57 WiFiMonster 阅读(88) 评论(0) 推荐(0) 编辑
摘要: kmp #include<bits/stdc++.h> using namespace std; const int maxn=1e6+4; char a[maxn],b[maxn]; int p[maxn]; int main(){ scanf("%s",a+1); scanf("%s",b+1) 阅读全文
posted @ 2019-01-07 13:51 WiFiMonster 阅读(190) 评论(0) 推荐(0) 编辑
摘要: https://vjudge.net/contest/278181 写在前面: 1)一个子串既是一个后缀的前缀,又是一个前缀的后缀 2)AC自动机/后缀数组后常接DP/数据结构 Problem 0 Long Long Message (后缀数组) http://poj.org/problem?id= 阅读全文
posted @ 2019-01-07 09:59 WiFiMonster 阅读(324) 评论(0) 推荐(0) 编辑
摘要: strlen(s) O(n) Trie树 O(sigma len[i]); AC自动机 建立一个trie树 fail指针:根的fail指针指向自己,其余节点找到一个最长后缀使得它是原来某个串的一个前缀,fail指针指向该前缀在trie树上的位置 fail指针性质:1.指向比它浅的节点(除根的fail 阅读全文
posted @ 2019-01-07 09:17 WiFiMonster 阅读(145) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problemnew/show/P4211 人生中第一道黑题!!!我觉得差不多紫题难度吧qaq 题意: 思路: 代码: 阅读全文
posted @ 2019-01-06 21:05 WiFiMonster 阅读(145) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problemnew/show/AT2061 题意: 给你每个点到最远点的距离,求是否存在这样的一颗树。 n<=200。 思路: 一个性质是每个点的最远点一定是直径的端点。 然后我们找出直径长度,要求能构造出这条直径(每种距离都有2个点,当然直径中心只需要 阅读全文
posted @ 2019-01-06 11:24 WiFiMonster 阅读(151) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problemnew/show/AT2673 题意: 思路:与CF468D TREE类似 代码: 阅读全文
posted @ 2019-01-06 11:22 WiFiMonster 阅读(147) 评论(0) 推荐(0) 编辑
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2019-01-06 11:19 WiFiMonster 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 树的重心 定义:将树上某点删掉后,剩下的子树大小最小。 性质:1)树的重心的每棵子树大小一定小于等于n/2 2)每棵子树大小一定小于等于n/2的点一定是树的重心->最多有2个点为重心且相邻 3)树中所有点到某点的距离和中,到重心的距离和最小。(如果有2个重心,距离和一样) 4)两棵树通过一条边相连成 阅读全文
posted @ 2019-01-06 08:19 WiFiMonster 阅读(140) 评论(0) 推荐(0) 编辑