UVa11732 "strcmp()" Anyone?
来源:互联网 发布:淘宝店铺一心好做吗 编辑:程序博客网 时间:2024/05/24 15:40
原题
题目传送
题解
用Trie把所有单词合起来,插入一次就统计一次这个单词和已插入的单词比较的次数。也就是相同部分前缀长度*2+1.但是注意两个完全相同的单词比如说a a需要比4次,因为最后的结束符号也是一样的,还有就是左儿子右兄弟表示法,好好学习QAQ。
代码
#include<queue>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=1000+10;const int maxnode=4000000+10;typedef long long ll;struct Trienode{ char ch; int cnt,val; Trienode *lc,*next; Trienode(){ lc=next=NULL; val=cnt=ch=0; }};struct Trie{ Trienode *root; Trie(){ root=new Trienode(); } inline void clear(){ root=new Trienode(); } inline ll insert(Trienode *p,char *s,int v){ ll ret=0; int n=strlen(s); for(int i=0;i<n;i++) { int x=0; Trienode *k=p->lc,*wh=NULL; for(;k;k=k->next) { if(k->ch==s[i])wh=k; else x+=k->cnt; } k=wh; if(!k) { k=new Trienode(); k->next=p->lc; p->lc=k; k->ch=s[i]; } if(x) ret=ret+(i*2+1)*x; if(i==n-1) { ret=ret+((i+1)*2+1)*k->cnt; if(k->val) ret+=k->val; } else if(k->val) ret=ret+(2*(i+1)+1)*k->val; k->cnt++; p=k; } p->val+=v; return ret; }}trie;int kase=0,n;char s[maxn];void solve(){ trie.clear(); ll ans=0; for(int i=1;i<=n;i++) { scanf("%s",s); ans+=trie.insert(trie.root,s,1); } printf("Case %d: %lld\n",++kase,ans); return ;}int main(){ while(scanf("%d",&n)==1&&n) solve(); return 0;}
0 0
- [UVA11732] strcmp() Anyone? && 字符串
- UVa11732 "strcmp()" Anyone?
- uva11732 "strcmp()" Anyone?
- uva11732 "strcmp()" Anyone?
- 【uva11732】"strcmp()" Anyone?
- uva11732 - strcmp() Anyone? 前缀树
- UVa11732 Strcmp,Anyone?[Trie树]
- UVA11732 strcmp() Anyone?(Trie树)
- 字典树("strcmp()" Anyone? uva11732)
- uva11732 strcmp 字典树 存储
- Uva-11732-strcmp() Anyone?
- Uva 11732 strcmp() Anyone?
- uva 11732 - strcmp() Anyone?
- UVa:11732 strcmp() Anyone?
- UVA - 11732 strcmp() Anyone?
- UVa 11732 - strcmp() Anyone?
- UVa 11732 strcmp() Anyone?
- UVa 11732 strcmp() Anyone?
- 【less】查看文本
- 局域网聊天,广播消息
- 【OpenCV矩阵结构体】CvMat的操作
- 文件对比工具Beyond Compare使用方法
- Jenkins环境搭建(3)
- UVa11732 "strcmp()" Anyone?
- android Json解析详解(详细代码)
- 【more】可以分页(分屏)查看文件内容(支持向后翻页)
- JSP-Servlet中文乱码
- Elasticsearch 中文搜索搭建
- 并发与并行
- 树状数组
- [从头学数学] 第175节 统计
- Android自定义View之Layout的放缩(2)