https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2483

给定一个字符串集合S, 定义P(S)为所有字符串的公共前缀长度与S中字符串个数的乘积, 例如P{000, 001, 0011} = 6,

现在给出n个只包含字符01的串(n <= 50000), 从中选出一个子集合S, 使得P(S)最大, 求最大值

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define ios() ios::sync_with_stdio(false)
#define INF 0x3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
char s[];
int ans,n,t,pos;
struct Trie
{
int next[];
int cnt;
void init()
{
cnt=;
memset(next,,sizeof(next));
}
}trie[];
void init()
{
for(int i=;i<=n*;i++ )
{
trie[i].init();
}
}
void insert(char *s)
{
int x=;
for(int i=;s[i]!='\0';i++)
{
if(trie[x].next[s[i]-'']==)
{
trie[x].next[s[i]-'']=++pos;
trie[pos].init();
}
x=trie[x].next[s[i]-''];
trie[x].cnt++;
ans=max(ans,(i+)*trie[x].cnt);
}
}
int main()
{
scanf("%d",&t);
while(t--)
{ ans=,pos=;
scanf("%d",&n);
init();
for(int i=;i<n;++i)
{
scanf("%s",s);
insert(s);
}
printf("%d\n",ans); }
return ;
}

最新文章

  1. FreeMarker:怎么使用
  2. jquery动态改变div宽度和高度
  3. [NOIP2015] 提高组 洛谷P2679 子串
  4. 黑客入门之IP地址及常用命令
  5. VMware ESXI5.0的安装配置 zz
  6. C# 集合 — Hashtable 线程安全
  7. HDU 4610 Cards (合数分解,枚举)
  8. Javascript(JS)中的大括号{}和中括号[]详解
  9. 批量创建prefab
  10. Funny Sheep(思维)
  11. 四轴飞行器1.2.1 RT-Thread 环境搭建
  12. 前端新人学习笔记-------html/css/js基础知识点
  13. Oracle在不同的语言环境结果to_date错误的问题
  14. Java基础---继承、抽象、接口
  15. 搭建Pypi转发服务
  16. Matconvnet 的一些记录
  17. webservice之helloword(web)rs
  18. Advanced DataStream API Low-latency Event Time Join
  19. eclipse调优
  20. 1.Servlet

热门文章

  1. Visual Studio2008 和2010 执行程序出现的黑框马上消失解决方法
  2. 什么是 &amp;quot;署名-非商业性使用-同样方式共享&amp;quot;
  3. 关于App程序猿泡沫
  4. Nrf51822中设置128bit UUID service
  5. BZOJ1306: [CQOI2009]match循环赛
  6. BZOJ 3629 约数和定理+搜索
  7. datatable设置成中文
  8. CentOS中实现与Ubuntu下apt-get install build-essential功能类似的命令
  9. LG Gram 2018 z980 白
  10. 【转】Flash AS3.0 中的自定义事件