yanchuen 发表于 2015-4-3 13:05:50

HDU 11488 Hyper Prefix Sets (字符串-Trie树)

本帖最后由 wuyvzhang 于 2016-8-2 17:24 编辑 <br /><br />  



H


Hyper Prefix Sets



  
  
  Prefix goodness of a set string is length of longest common prefix*number of strings in the set. For example the prefix goodness of the set {000,001,0011} is 6.You are given a set of binary strings. Find the maximum prefix goodness among all possible subsets
of these binary strings.
  Input
First line of the input contains T(≤20) the number of test cases. Each of the test cases start with n(≤50000) the number of strings. Each of the next n lines contains a string containing only 0 and 1. Maximum length of each of these string is 200.
  Output
For each test case output the maximum prefix goodness among all possible subsets of n binary strings.
Sample Input                           Output for Sample Input


  4
  4
  0000
  0001
  10101
  010
  2
  01010010101010101010
  11010010101010101010
  3
  010101010101000010001010
  010101010101000010001000
  010101010101000010001010
  5
  01010101010100001010010010100101
  01010101010100001010011010101010
  00001010101010110101
  0001010101011010101
  00010101010101001
  

  6
  20
  66
  44
  
  



  Problem Setter : Abdullah Al Mahmud
Special Thanks : Manzurur Rahman Khan
  题目大意:
  
  如果a表示公共前缀的长度,b表示含有这个前缀的字符串个数,问你a*b的最大值。

  
  解题思路:
  
  建立一棵Trie树,边建边查,直接更新 长度乘以个数的最大值
  
  解题代码:
  #include
#include
#include
#include
using namespace std;
const int maxn=500000;
int tree;
int val,cnt;
int n,ans;
void insert(string st){
int s=0;
for(int i=0;ians) ans=(i+1)*val;
}
}
void initial(){
cnt=ans=0;
memset(val,0,sizeof(val));
memset(tree,0,sizeof(tree));
}
void solve(){
cin>>n;
for(int i=0;i>st;
insert(st);
}
cout

www.138362.com SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投μ注任何游戏顶级信用μ提现即时到账SO.CC
页: [1]
查看完整版本: HDU 11488 Hyper Prefix Sets (字符串-Trie树)