hdu4886 TIANKENG’s restaurant(Ⅱ) (trie树或者模拟进制)
TIANKENG’s restaurant(Ⅱ)
Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 130107/65536 K (Java/Others)
Total Submission(s): 456 Accepted Submission(s): 149
Meanwhile, T is different from all the substrings of S. Could you help TIANKENG get the name as soon as possible?
In each test case:
Input a string S. the length of S is not large than 1000000.
Output the string t satisfying the condition.(T also only contains eight kinds of letters-------‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’.)
ABCDEFGH
AAABAACADAEAFAGAH
ACAC
BB
B
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int maxnode = ;
typedef pair<int,int> pii;
//const int maxnode = 1000000;
const int sigma_size = ; struct Trie{
int ch[maxnode][sigma_size];
int fa[maxnode];
char let[maxnode];
int sz;
void init()
{
sz=;
memset(ch[],,sizeof(ch[]));
}
int idx(char c) {return c-'A';}
void insert(char *s,int n)
{
int u=;
for(int i=;i<n;++i)
{
int c=idx(s[i]);
if(!ch[u][c])
{
memset(ch[sz],,sizeof(ch[sz]));
fa[sz]=u;
let[sz]=c+'A';
ch[u][c]=sz++;
if(sz>=maxnode)
cout<<"fuck this memory"<<endl;
}
u=ch[u][c];
}
}
char ans[];
int ansz;
void bfs()
{
int u;
queue<int> q;
q.push();
while(!q.empty())
{
u=q.front();
q.pop();
for(int i=;i<sigma_size;++i)
{
if(ch[u][i])
{
q.push(ch[u][i]);
}
else
{//find
// cout<<"find "<<u<<endl;
ans[]=i+'A';
ansz=;
print(u);
return;
}
}
}
}
void print(int u)
{
while(u)
{
// cout<<".";
ans[ansz++]=let[u];
u=fa[u];
}
// cout<<"sz="<<ansz<<endl;
for(int i=ansz-;i>=;--i)
printf("%c",ans[i]);
printf("\n");
}
void text()
{
int i;
for(i=;i<sz;++i)
{
printf("%d: fa=%d let=%c\n",i,fa[i],let[i]);
}
}
}; char ms[];
Trie tree; void run()
{
int i,len;
scanf("%s",ms);
len = strlen(ms);
tree.init();
for(i=;i<len;++i)
{
tree.insert(ms+i,min(,len-i));
}
// tree.text();
tree.bfs();
} int main()
{
//freopen("in","r",stdin);
int _;
scanf("%d",&_);
while(_--)
run();
return ;
}
hdu4886 TIANKENG’s restaurant(Ⅱ) (trie树或者模拟进制)的更多相关文章
- HDU4814——数学,模拟进制转换
本题围绕:数学公式模拟进制转换 HDU4814 Golden Radio Base 题目描述 将一个十进制的非负整数转换成E(黄金分割数)进制的数 输入 不大于10^9的非负整数,处理到文件尾 输出 ...
- hdu 4099 Revenge of Fibonacci Trie树与模拟数位加法
Revenge of Fibonacci 题意:给定fibonacci数列的前100000项的前n位(n<=40);问你这是fibonacci数列第几项的前缀?如若不在前100000项范围内,输 ...
- 【CF888G】Xor-MST Trie树(模拟最小生成树)
[CF888G]Xor-MST 题意:给你一张n个点的完全图,每个点有一个权值ai,i到j的边权使ai^aj,求这张图的最小生成树. n<=200000,ai<2^30 题解:学到了求最小 ...
- 【BZOJ4523】[Cqoi2016]路由表 Trie树模拟
[BZOJ4523][Cqoi2016]路由表 Description 路由表查找是路由器在转发IP报文时的重要环节.通常路由表中的表项由目的地址.掩码.下一跳(Next Hop)地址和其他辅助信息组 ...
- 2016ACM-ICPC网络赛北京赛区 1001 (trie树牌大模拟)
[题目传送门] 1383 : The Book List 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 The history of Peking University ...
- HDU 4883 TIANKENG’s restaurant Bestcoder 2-1(模拟)
TIANKENG's restaurant Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/O ...
- 【BZOJ2741】【FOTILE模拟赛】L 分块+可持久化Trie树
[BZOJ2741][FOTILE模拟赛]L Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max( ...
- 2018.10.20 NOIP模拟 巧克力(trie树+dfs序+树状数组)
传送门 好题啊. 考虑前面的32分,直接维护后缀trietrietrie树就行了. 如果#号不在字符串首? 只需要维护第一个#前面的字符串和最后一个#后面的字符串. 分开用两棵trie树并且维护第一棵 ...
- 【bzoj2741】[FOTILE模拟赛]L 可持久化Trie树+分块
题目描述 FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor A ...
随机推荐
- LRM-00109: could not open parameter file
SQL>startup ...
- cmake policy
1 cmake policy是什么? cmake policy可以理解为cmake的语法标准,也就是说,它规定了cmake在解析CMakeLists.txt文件时的行为. 2 cmake policy ...
- synchronized同步关键字
参考:http://blog.csdn.net/luoweifu/article/details/46613015 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: ...
- vector缩减容量
在C++标准库容器vector的容量是不会自动的缩减的,也就是说删除元素操作,其引用.指针.迭代器也会继续有效.那么当在一个较大的vector中删除了大量的元素之后,其实际的size比较小,而其cap ...
- 6410开发板sd卡启动时烧写u-boot.bin以及u-boot-spl-16k.bin步骤
参考文档:<SMDK6410_IROM_APPLICATION NOTE_REV 1.00>(可以从这里下载到> 参考博客:Tekkaman的博文<u-boot-2010.09 ...
- 跟我一起学Git (十) Patches【转】
本文转载自:http://cs-cjl.com/2014/05/05/learn_git_with_me_10 Git实现了以下三条用于交换patch的命令: git format-patch 用于创 ...
- POJ2443 Set Operation —— bitset
题目链接:https://vjudge.net/problem/POJ-2443 Set Operation Time Limit: 3000MS Memory Limit: 65536K Tot ...
- 大数据之路- Hadoop环境搭建(Linux)
前期部署 1.JDK 2.上传HADOOP安装包 2.1官网:http://hadoop.apache.org/ 2.2下载hadoop-2.6.1的这个tar.gz文件,官网: https://ar ...
- display:inline-bock的注意
前端当一组元素设置为display:inline-block;时,每个元素之间的回车会被作为一个空格.
- 【POJ 3580】SuperMemo Splay
题意 给定$n$个数,$m$个询问,每次在$[L,R]$区间加上一个数,或者反转一个区间$[L,R]$,或者循环右移区间$[L,R]$共$T$次,或者在第$x$个数后插入一个数$p$,或者删除第$x$ ...