字符串
文章平均质量分 50
小青WA
扣扣1916493526
展开
-
codeforces 1469 E. A Bit Similar(unorderedmap + bitset)
题目链接:https://codeforces.com/contest/1469/problem/E题意:给你一个长度为n的01串,请问你能否构造出一个k长度的01串使这个构造出来的串与原串的所有k长度的子串都至少有1位相同(同位数字符一样)NO/YES输出构造串n,k<= 1e6思路:算是个思维题⑧2^20 > 1e6(n - k + 1种子串的情况) 所以对于超出20位的部分可以一律不考虑将长度为k的串分成两部分前Len(=n - K) +后K(=m...原创 2021-01-12 16:30:34 · 258 阅读 · 0 评论 -
hdu6230 2017CCPC 哈尔滨A Palindrome
题意给你一个1e5的字符串,让你求出子串的数量,使得子串满足:长度为3n−23n−2,且[1,2n−1][1,2n−1]和[n,3n−2][n,3n−2]都是回文串。思路这两个回文串长度都是奇数manachar求出每个位置的最长回文半径那么假设两个回文中心为ij那么需满足 i + r[i] ≥ j &&j −r[j] ≤ i用树状数组离线求答案G[i - r[i]].push_back(i);//G[这个位置开始的].push_back(覆盖到哪里);...原创 2020-10-29 22:13:47 · 121 阅读 · 0 评论 -
codeforces 149E Z-box/Z-algorithm字符串匹配
题意给你一个文本串,下面n个匹配串,问你这些p中有多少可以由s[i~j] + s[l~r]凭借而来,可以退化成一段(j =l);思路Z-box模板题,pos数组是灵魂分别处理出来p+'#'+s(void getz()) P+'#'+S(void getZ())的z数组(大写是小写的反序),pos[i]记录长度为i的前半截字段的最小右端边界即在getz()中pos[z[i...原创 2019-11-20 15:16:05 · 163 阅读 · 0 评论 -
Z-box / Z-algorithm字符串匹配
简介z[i]:对于i这个位置和原本的字符串的相同前缀长度是多少p[] +"#" + s[]——可知对于匹配串 文本串每个位置与其相同的前缀z数组的处理z[0]无效 = 0,用z[k](k < i)来推出z[i]看看之前算好的z有没有可以覆盖当前的i,而且覆盖右边界越右越好 l,r是box的边界if(没有之前的zbox能覆盖) 只好从i这一位暴力枚举处理答案el...原创 2019-11-19 18:47:16 · 179 阅读 · 0 评论 -
KMP + POJ3461
模板:void get_next(){ int pLen = strlen(p); nxt[0] = -1; int k = -1; int j = 0; while (j < pLen - 1){ if(k == -1 || p[j] == p[k]){ ++k; ++j; nxt[j] = k; } else{ k = nxt[k];...原创 2019-05-03 10:12:59 · 144 阅读 · 2 评论 -
字典树
每个点都独一无二欧~~pre——前缀void build(){ int root = 0;//首字母不存在的话从头开始存啊 for(int i = 0;i < len ;i++){ int cur = s[i] - 'a'; if(!trie[root][cur]) trie[root][cur] = ++cnt; //从root节点到cur这条边如果不存在的话 建...原创 2019-08-05 19:11:11 · 162 阅读 · 0 评论