UVA 11488-Hyper Prefix Sets(trie树+DFS)
来源:互联网 发布:列主元三角分解法C语言 编辑:程序博客网 时间:2024/05/29 17:58
题目大意:给出若干个01串,定义P(S)为这个串的集合的某个公共前缀的长度乘有这个公共前缀的字符串个数,求最大的P(S)。
用trie树存字符串,val[u]表示结点u有多少个字符串可称为公共前缀,最终dfs求出答案。
#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXNODE 10000010#define SIZE 2int ch[MAXNODE][SIZE];int val[MAXNODE];char datin[1100];int siz,max;void trie_insert(void);void dfs(int now,int u);int main(void){int i,n,pi,qi;scanf("%d",&pi);for(qi=0;qi<pi;qi++){scanf("%d",&n);ch[0][0]=ch[0][1]=0;for(i=1;i<=n;i++){scanf("%s",datin+1);trie_insert();}max=0;dfs(0,0);printf("%d\n",max);}return 0;}void dfs(int now,int u){if(val[now]*u>max){max=val[now]*u;}if(ch[now][0]!=0){dfs(ch[now][0],u+1);}if(ch[now][1]!=0){dfs(ch[now][1],u+1);}}void trie_insert(void){int i,j,lo,now;lo=strlen(datin+1);now=0;for(i=1;i<=lo;i++){j=datin[i]-'0';if(ch[now][j]==0){siz++;ch[siz][0]=ch[siz][1]=0;ch[now][j]=siz;val[siz]=0;}now=ch[now][j];val[now]++;}}
0 0
- UVA 11488-Hyper Prefix Sets(trie树+DFS)
- UVA 11488,Hyper Prefix Sets,Trie树
- Hyper Prefix Sets - UVa 11488 Trie树
- uva 11488 - Hyper Prefix Sets(Trie)
- UVa 11488 - Hyper Prefix Sets (Trie)
- UVA 11488 Hyper Prefix Sets(Trie)
- UVA 11488 - Hyper Prefix Sets(Trie)
- UVA 11488 Hyper Prefix Sets (Trie)
- UVA - 11488 - Hyper Prefix Sets(Trie 应用)
- UVA 11488 Hyper Prefix Sets Trie树求最值
- UVA 11488(Hyper Prefix Sets-Trie统计)
- UVa 11148 Hyper Prefix Sets (Trie)
- UVA 11488 Hyper Prefix Sets(trie的应用)
- UVa11488-Hyper Prefix Sets(trie树)
- uva11488 Hyper Prefix Sets(Trie树)
- HDU 11488 Hyper Prefix Sets (字符串-Trie树)
- uva 11488 - Hyper Prefix Sets(字典树)
- UVA 11488 Hyper Prefix Sets 字典树
- Codeforces 421D Giving Awards 策略题
- ILI9341 8080接口1
- 数据结构与算法(day-3)线性表
- POJ 题目3267 The Cow Lexicon(动态规划)
- Python post test
- UVA 11488-Hyper Prefix Sets(trie树+DFS)
- 2015新年好
- BZOJ 2502 上下界网络流
- 重头写一个v4l2的虚拟驱动_1
- J2EE框架搭建大集合
- spoj12943 Counting dp
- 重头写一个v4l2的虚拟驱动_2
- (hdu step 4.3.3)Sum It Up(从n个数中选出m个数让他们的和达到指定和targetSum,输出所有的合法序列)
- POJ 4052-Hrinity(KMP算法+AC自动机)