
字符串
实用
美少女zss
ccpc绵阳铜,icpc西安银,jscpc江苏金。
展开
-
CFdiv2-Compress Words-(双哈希)
E题意:就是给你n个字符串,然后依次把他们拼接起来,拼接的同时,如果前面的串后缀和后面的串前缀有共同的,那么就删去,再拼接。问你最后拼接完的串是什么样的。思考:刚开始我还以为直接枚举从哪开始匹配然后删,一看复杂度n*n的。然后对于拼接一个串怎么看公同最长多少呢。首先a串的最后一个肯定是比看的,b串的最开始的肯定是必看的。那么就从a串的最后一个往前走,b串的第一个往后走,这样就线性的维护每个点的值都加起来,判断是否相同就行了。哈希的时候最左边的肯定都是次幂高的。然后值得注意的就是,当前不同的时候不代表再往原创 2022-07-12 16:10:00 · 99 阅读 · 0 评论 -
2020湖南省赛-String Commutativity-(KMP求最小循环节)
D题意:就是给你n个字符串,问你有多少对i<j,满足si+sj = sj+si。思考:推了推发现只要两个字符串的最小循环一样,那么他俩就可以合并,那么现在就是如何去求最小循环,那么就是KMP求最小循环节的板子。代码:#include<bits/stdc++.h>#define fi first#define se second#define pb push_back#define db double#define int long long#define PII p原创 2022-05-05 14:02:40 · 228 阅读 · 0 评论 -
牛客月赛13-小A的回文串-(manachar)
B题意:就是给你一个字符串,然后可以从中间某个地方切开,前面的接到后面,问你操作后最长的回文子串,当然也可以不操作。思考:数据范围比较大,n方之后就只能用manachar做了。代码:int T,n,m,k;int va[N]; int Manacher(string s){ string t = "$#"; for (int i = 0; i < s.size(); ++i) { t += s[i]; t += "#"; }原创 2022-03-01 18:18:08 · 131 阅读 · 0 评论