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 ...
随机推荐
- python 基础 1.3 使用pycharm给python传递参数及pycharm调试模式
一.通过pycharm 给python传递函数 1. 在pycharm终端中写入要获取的参数,进行获取 1>启动pycharm 中Terminal(终端) 窗口 点击pycharm左下角的图标, ...
- 使用Scrapy采集
1.有些站点通过robot协议,防止scrapy爬取,就会出现如下问题: DEBUG: Forbidden by robots.txt: <GET http://baike.baidu.com/ ...
- XShell 连接 vm虚拟机中的redhat Linux系统
选择的是nat链接,因为nat链接是没有网络的情况下,也是可以链接操作的,当然bridge也可以,那我就从第一步开始; 因为有的人可能改过电脑上的虚拟适配器的ip地址,导致和虚拟机默认的不一样了.如果 ...
- Leslie Lamport
http://lamport.azurewebsites.net/pubs/pubs.html paper
- python网络爬虫之使用scrapy自动登录网站
前面曾经介绍过requests实现自动登录的方法.这里介绍下使用scrapy如何实现自动登录.还是以csdn网站为例. Scrapy使用FormRequest来登录并递交数据给服务器.只是带有额外的f ...
- SAP数据表相关
[转]SAP 数据表相关信息 今天用到了根据字段取数据元素描述,以前做过忘啦,在谢兄的帮助下搞定,把他的总结粘出来记住. 存储域(Domain)信息的表为DD01L:存储数据元素(Data Eleme ...
- 【转】Unicode(UTF-8, UTF-16)令人混淆的概念
参考地址:http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html Java中,char类型用UTF-16编码描述一个代码单元 为啥 ...
- Understanding JDBC Internals & Timeout Configuration
原版:http://www.cubrid.org/blog/dev-platform/understanding-jdbc-internals-and-timeout-configuration 中文 ...
- OTA升级
除了云端平台这部分,还要有通讯协议层面.云端和汽车端之间指令的接口和协议的制定,不同车厂会有不同诉求.艾拉比既可以支持车厂私有化定制协议的要求,也可以提供基于OMA标准的协议. 第一,它既是云端的工具 ...
- Linux学习之路(五)压缩命令
常用压缩格式: .zip .gz .bz2 常用压缩格式: .tar.gz .tar.bz2 .zip格式压缩 .zip 压缩文件名 源文件 #压缩文件 .zip -r 压缩文件名 源目录 #压缩目录 ...