UVA 11488 Hyper Prefix Sets (字典树)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2483
组织一棵Trie 记录每个节点有多少串经过 统计最大值
由于只出现0,1,于是建立一个字典树,每一次到达一个节点,就在这个节点加上深度,然后ans求解最大的节点附加值就可以了。注意初始化
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
#include <queue>
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 INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
#define maxnode 100000
typedef long long ll;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
bool cmp(int x,int y)
{
return x>y;
}
const int N=;
const int mod=1e9+;
int n;
struct Trie
{
int ch[maxnode][];
int val[maxnode];
int sz=,ans=;
void init(){sz=;
ans=;
memset(ch[],,sizeof(ch[]));
memset(val,,sizeof(val));
}
int idx(char c){
return c-'';
}
void insert(char* s,int len){
int u=;
for(int i=;i<len;i++){
int v=idx(s[i]);
if(!ch[u][v]){
memset(ch[sz],,sizeof(ch[sz]));
ch[u][v]=sz++;
}
u=ch[u][v];
val[u]+=(i+);
ans=max(ans,val[u]);
}
}
};
struct Trie trie;
char s[maxnode];
int main()
{
int t;
cin>>t;
while(t--){
trie.init();
cin>>n;
while(n--){
cin>>s;
trie.insert(s,strlen(s));
}
cout<<trie.ans<<"\n";
}
return ;
}
UVA 11488 Hyper Prefix Sets (字典树)的更多相关文章
- UVA 11488 Hyper Prefix Sets (字典树)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- uva 11488 - Hyper Prefix Sets(字典树)
H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of str ...
- UVA 11488 Hyper Prefix Sets (Trie)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA - 11488 Hyper Prefix Sets(trie树)
1.给n个只含0.1的串,求出这些串中前缀的最大和. 例1: 0000 0001 10101 010 结果:6(第1.2串共有000,3+3=6) 例2: 01010010101010101010 1 ...
- UVa 11488 - Hyper Prefix Sets
找 前缀长度*符合该前缀的字符串数 的最大值 顺便练了一下字典树的模板 #include <iostream> #include <cstdio> #include <c ...
- uva 11488 Hyper Prefix Sets(狂水)
题意: 获得集合中最长前缀长度*有该前缀个数的最大值 Prefix goodness of a set string is length of longest common prefix*number ...
- HDU 11488 Hyper Prefix Sets (字符串-Trie树)
H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of str ...
- 208 Implement Trie (Prefix Tree) 字典树(前缀树)
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个方法.注意:你可以假设所有的输入都是小写字母 a-z.详见:https://leetcode.co ...
- 【leetcode】208. Implement Trie (Prefix Tree 字典树)
A trie (pronounced as "try") or prefix tree is a tree data structure used to efficiently s ...
随机推荐
- 【LDA】周志华
一.书籍
- MRPT编译
今天尝试编译一下MRPT,主要是为了学习里面的路径规划算法. 自主探索,未知环境探索...... 编译的过程中遇到一个问题就是wxWidgets老是检测不到,让我添加它的root目录.明明wxWidg ...
- docker的容器和镜像的差别
- Spark:java.net.BindException: Address already in use: Service 'SparkUI' failed after 16 retries!
Spark多任务提交运行时候报错. java.net.BindException: Address already retries! at sun.nio.ch.Net.bind0(Native Me ...
- 【LeetCode每天一题】Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head. You may not modify the value ...
- Vbox下的linux和windows共享文件设置
参考链接: https://jingyan.baidu.com/article/2fb0ba40541a5900f2ec5f07.html
- 《Java程序设计》第十一章 JDBC与MySQL数据库
目录 java.sql Tips java.sql 安装导入方法见娄老师博客Intellj IDEA 简易教程 照惯例给出官方文档Package java.sql,记得熟练使用ctrl+f以及提高英语 ...
- centos下如何清除重复的$PATH变量值
运行: vim /etc/profile 添加如下代码: awk -F: '{ sep = "" for (i = 1; i <= NF; ++i) ...
- U盘复制文件到最后5秒会卡住怎么办解决
现在的U盘容量已经非常大了,一般都有16G以上,为了能放单文件大于4G的数据大多数时候我们都是把U盘格式化为ntfs格式的,所以会出现不管是大文件还是小文件,当你往U盘里复制文件或者使用发送到U盘功能 ...
- (转载)深入了解MyBatis参数
原文地址:http://blog.csdn.net/isea533/article/details/44002219 深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Pa ...