UVA 12506(字典树)
来源:互联网 发布:js 日期格式化 编辑:程序博客网 时间:2024/05/17 21:39
题意:给你n个字符串,问每个字符串的唯一最短前缀的长度总和是多少?
题解:很容易想到字典树,统计每个字母的出现次数,递归到每个单词的次数为1的位置,加上递归的层数就OK了,其实就是字典树的小变形
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<set>#include<utility>using namespace std;#define LL long long #define N int(1e6+10)#define lson L,mid,rt<<1#define rson mid+1,R,rt<<1|1char s[N];int ans;struct trie{int value;trie *child[30];trie(){value=0;memset(child,NULL,sizeof(child));}}*root;void insert(char *s){trie *x=root;for(int i=0;s[i];i++){int pos=s[i]-'a';if(x->child[pos]==NULL){x->child[pos]=new trie;}x=x->child[pos];x->value++;}}void deal(trie *x){if(x==NULL)return ;for(int i=0;i<26;i++){if(x->child[i]!=NULL){deal(x->child[i]);}}}void dfs(trie *x,int level){if(x==NULL){return;}if(x->value==1){ans+=level;return ;}for(int i=0;i<26;i++){if(x->child[i]!=NULL){dfs(x->child[i],level+1);}}}int main (){#ifdef CDZSCfreopen("i.txt","r",stdin);#endifint n,t;scanf("%d",&t);while(t--){ans=0;root=new trie;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s",s);insert(s);}dfs(root,0);deal(root);printf("%d\n",ans);}return 0;}
0 0
- UVA 12506(字典树)
- UVA Immediate Decodability(简单字典树)
- UVA 11732 "strcmp()" Anyone?(字典树)
- Uva 11732 "strcmp()" Anyone? (字典树)
- UVA 12124 Assemble (二分 + 字典树)
- UVA 12937 字典树
- uva 11488 字典树
- UVA 11488 字典树
- UVa 1401 字典树+DP
- UVA 11732 链式字典树
- 字典树(strcmp()函数,uva 11732)
- UVA 1401 & LA 3942 (字典树Trie+递推)
- uva 1401 - Remember the Word(字典树)
- uva 11488 - Hyper Prefix Sets(字典树)
- UVA 1401 Remember the Word(字典树)
- UVa 11488 Hyper Prefix Sets(字典树)
- UVa 12333 - Revenge of Fibonacci (大数 + 字典树)
- UVA 11488 Hyper Prefix Sets(字典树)
- CTeX使用Tips
- PAT-A1085. Perfect Sequence (25)
- CSS中如何实现表格文字的换行
- LeetCode 50 Pow(x, n)(Math、Binary Search)(*)
- BZOJ2423/HAOI2010 最长公共子序列
- UVA 12506(字典树)
- leetcode:Jump Game II 【Java】
- JQuery $post函数
- 【Android】EditText获得焦点以及失去焦点
- PAT-A1029. Median (25)
- 如何实现网页点击左边的导航右边显示对应的页面?
- hdu1576 A/B 扩展欧几里德算法
- 我与即时通讯 - PC 客户端
- PAT-A1048. Find Coins (25)