当前位置: 首页 > news >正文

字符串专题

rt,会罗列一些近期做的串串题

一些题单:

清烛 - 字符串

Hoks -『提高进阶篇』ACAM。

Polaris_Australis - 后缀数组,后缀自动机,回文自动机题单

hs_black - 【字符串】后缀系列

一些博文:

alex-wei - 常见字符串算法 好像是老文章了?不过里面有修订版索引。

Part 1

P3966 [TJOI2013] 单词

ACAM 练手题,先考虑给这个文本串两两之间用一个没出现过的符号隔开就可以搞出论文,然后建出字典树,然后用论文去跑,那么如果当前节点在 \(x\),那么所有 \(fail_x\) 那些单词都可以作为这个的后缀,所以先全打标记,最后从后往前释放即可。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
namespace IO
{template<typename T>void read(T &_x){_x=0;int _f=1;char ch=getchar();while(!isdigit(ch)) _f=(ch=='-'?-1:_f),ch=getchar();while(isdigit(ch)) _x=_x*10+(ch^48),ch=getchar();_x*=_f;}template<typename T,typename... Args>void read(T &_x,Args&...others){Read(_x);Read(others...);}const int BUF=20000000;char buf[BUF],to,stk[32];int plen;#define pc(x) buf[plen++]=x#define flush(); fwrite(buf,1,plen,stdout),plen=0;template<typename T>inline void print(T x){if(!x){pc(48);return;}if(x<0) x=-x,pc('-');for(;x;x/=10) stk[++to]=48+x%10;while(to) pc(stk[to--]);}
}
using namespace IO;
const int N = 2e6+10,M = 210;
int n,tr[N][27],c[M],fail[N],b[N],cnt = 1,o,cnt1,st[N],cnt2,x,y,z;
string s,t;
ll sum[N];
queue<int>p;
inline int insert(int x)
{for(int j = 1;j <= cnt1;j++) {if(!tr[x][b[j]]) tr[x][b[j]] = ++cnt;x = tr[x][b[j]];}return x;
}
inline void fail_build()
{for(int i = 0;i < 26;i++) if(tr[0][i]) p.push(tr[0][i]);while(!p.empty()){x = p.front(),p.pop(); st[++cnt2] = x;for(int i = 0;i < 26;i++)if(tr[x][i]) p.push(tr[x][i]),fail[tr[x][i]] = tr[fail[x]][i];else tr[x][i] = tr[fail[x]][i];}
}
inline void query(int x){ for(int j = 1;j <= cnt1;j++) x = tr[x][b[j]],sum[x]++; }//注意到要么有,要么是fail,直接取tr 
signed main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);read(n);for(int i = 1;i <= n;i++) {cin >> s,cnt1 = s.size(),t += s,s = ' '+s; t += 'A';for(int j = 1;j <= cnt1;j++) b[j] = s[j]-'a';c[i] = insert(0);} fail_build();cnt1 = t.size(),t = ' '+t;for(int j = 1;j <= cnt1;j++) b[j] = t[j]-'a';query(0);for(int i = cnt2;i >= 1;i--) sum[fail[st[i]]] += sum[st[i]];for(int i = 1;i <= n;i++) print(sum[c[i]]),pc('\n');flush(); return 0;
}
http://www.hskmm.com/?act=detail&tid=38671

相关文章:

  • 2025年包装机厂家权威推荐榜:自动包装机、半自动包装机源头企业综合测评与选购指南
  • 2025年清洗剂厂家权威推荐榜:水基型清洗剂专业解析,高效环保与行业应用深度评测
  • 古代的时辰,几更天与现在的时间对应关系是什么?
  • 2025年实用金属铝合金打包机厂家推荐榜单:多场景适配的优质之选
  • Unity-物理学习指南-全-
  • 2025 年高低温试验箱厂家最新推荐,技术实力与市场口碑深度解析恒温恒湿试验箱/高低温试验箱厂家推荐
  • 2025年自动除渣颗粒热风炉厂家权威推荐榜单:生物质热风炉/大棚供暖热风炉/颗粒热风炉源头厂家精选。
  • 2025 年清洗机厂家最新推荐榜:涵盖喷淋清洗机 / 通过式喷淋清洗机 / 喷丝板清洗机等多类型,结合行业协会测评数据精选优质企业
  • Three-js-游戏开发-全-
  • 2025年靠谱的低温伴热带,铠装伴热带厂家推荐及采购指南
  • 2025年知名的污水格栅机,格栅机品牌厂家排行榜
  • 2025年比较好的渡线煤矿道岔,盾构施工煤矿道岔厂家最新推荐权威榜
  • 【Azure Entra ID】当Entra ID中的用户所属Group数量超过200个之后的问题
  • 2025年靠谱的聚酯切片吨袋,危化品吨袋厂家最新TOP实力排行
  • 2025 年国内连接器厂家最新推荐榜:中国电子元件行业协会测评认证,覆盖多领域的优质制造商精选
  • Paper: Extracting alignment data in open models
  • php直播源码,写代码实现缩进的快捷方式 - 云豹科技
  • 2025年知名的逆变器高压直流继电器,航空航天高压直流继电器厂家最新实力排行
  • Qt6学习入门——环境搭建
  • 2025年知名的助力机械手,桁架机械臂品牌厂家排行榜
  • 2025年防裂贴抗裂贴源头厂家权威推荐榜单:沥青路面抗裂贴/自粘式抗裂贴/抗裂贴源头厂家精选
  • XXL-JOB(7)
  • 2025年热门的精工智能定制五金,高端定制五金最新TOP品牌厂家排行
  • 2025年评价高的白色挤塑板,挤塑板厂家实力及用户口碑排行榜
  • 2025年质量好的制冷压缩机设备,活塞式制冷压缩机厂家最新热销排行
  • 2025年靠谱的风电驱鸟器,冲击波驱鸟器用户好评厂家排行
  • 2025年循环烘箱厂家最新企业推荐榜,热风循环烘箱厂家,聚焦服务品质与设备竞争力深度剖析
  • 邢台华电数控:车铣复合厂家技术应用与服务能力解析
  • 2025年靠谱的三联托辊,槽型托辊厂家推荐及选择参考
  • 2025年10月大路灯产品推荐榜:公牛领衔十强对比 。