ACdream 1121 喵喵的IDE
来源:互联网 发布:007支票打印软件 编辑:程序博客网 时间:2024/04/30 09:14
思路:建trie树,更新。
#include<iostream>#include<cstdio>#include<cstring>#include<map>#include<algorithm>#include<cmath>#include<string>#include<vector>#include<queue>using namespace std;struct node{ int a[27]; int s;}t[1111111];char c[1111111];int n,ans,num;void init(){ memset(t[0].a,-1,sizeof(t[0].a)); t[0].s=0; num=0;}void trie(char *d){ int l=strlen(d); int p=0; ans=0; for(int i=0;i<l;i++) { if(t[p].a[d[i]-'a']==-1) { t[p].a[d[i]-'a']=++num; memset(t[num].a,-1,sizeof(t[num].a)); t[num].s=t[p].s+1; } int u=p; p=t[p].a[d[i]-'a']; t[p].s=min(t[p].s,t[u].s+1); } ans=t[p].s;}void update(char *d){ int p=0; int l=strlen(d); for(int i=0;i<l;i++) { int u=p; p=t[p].a[d[i]-'a']; t[p].s=min(t[p].s,l-i); t[p].s=min(t[p].s,t[u].s+1); } //cout<<d[l-1]<<" "<<t[p].s<<endl;}int main(){ int T; scanf("%d",&T); while(T--) { init(); scanf("%d",&n); scanf("%s",c); trie(c); update(c); for(int i=0;i<n;i++) { scanf("%s",c); trie(c); printf("%d\n",ans); update(c); } } return 0;}
0 0
- ACdream 1121 喵喵的IDE
- ACdream 1121 喵喵的IDE (Trie)
- ACdream P1121 喵喵的IDE
- ACdream 1124 喵喵的遗憾
- ACdream 1124 喵喵的遗憾
- DP ACdream 喵哈哈村的挑衅
- acdream 1124 喵喵的遗憾 fib循环节
- ACDream dp专题 B - 喵哈哈村的挑衅
- 斐波那契模n循环节 ACdream 1124喵喵的遗憾
- XMUT ACdream DP专场E题 - 喵哈哈的日常选数问题(数位DP)
- Acdream的暴力专场
- ACdream的高速公路(暴力)
- ACdream的高速公路
- ACdream
- Acdream
- ACdream
- ACdream
- ACdream
- 别把我对你的爱转发给无关的看客,我不想将爱漫天广播
- 嵌入式杂项
- css框架960gridSystem和1200的
- VB.NET版机房收费系统---报表
- HDU-3265-Posters
- ACdream 1121 喵喵的IDE
- 编码的世界
- file_put_contents
- leetcode: Jump Game
- Android Notification通知详解
- 大数阶乘
- 《白帽子讲web安全》笔记之认证与授权那些事
- Binary Tree Zigzag Level Order Traversal
- ajax异步上传文件