【Codeforces Round #434 (Div. 1) B】Polycarp's phone book
【链接】h在这里写链接
【题意】
【题解】
【错的次数】
【反思】
【代码】
#include <bits/stdc++.h>
using namespace std; const int N = 7e4; int n,cnt = 1;//cnt 代表总节点个数 根节点在1位置,所以开始得赋值为1
string s[N+10];
int ch[(int)400e4][10];//最多有400万个节点。实际上没那么多。
int tc[(int)400e4]; int main(){
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio(0),cin.tie(0);
cin >> n;
for (int i = 1;i <= n;i++){//输入n个字符串,并且加入到AC自动机里去
//每个子串都要加进去
cin >> s[i];
int len = s[i].size();
for (int j = 0;j <= len-1;j++){//枚举起点
int now = 1;
for (int k = j;k <= len-1;k++){
int &temp = ch[now][s[i][k]-'0'];
if (temp==0) temp = ++cnt;
now = temp;//一层一层地往下走。
if (tc[now]==0)//如果这个节点之前没有出现过
tc[now] = i;//赋值这个点第一次被i走过。
else//如果之前有走过。
if (tc[now]!=i)//如果之前有被其他人走过。
//就说明这条路被多个字符串走过。
//路径有覆盖的地方
//这个now位置显然有被覆盖
tc[now] = -1;//则直接赋值为-1
//下次有个字符串到了这个位置的话。
//就不能用这个字符串。还得往下走。
//走道没有被覆盖的地方为止。
//else
}
}
}
for (int i = 1;i <= n;i++){
//每个答案都对应输出一下。
//枚举每个子串的开头。然后在字典树里走路径。
//找到第一个没有被多个字符串的子串覆盖的路径
int ans = 100;//存最后的最小长度
int id;//最后答案的起始位置
int len = s[i].size();
for (int j = 0;j <= len-1;j++){
int now = 1;
for (int k = j;k <= len-1;k++){
now = ch[now][s[i][k]-'0'];//往下走
if (tc[now]==i)//如果只有它一个人走过。则可以保证只有
//它一个字符串有这个子串
if (ans > k-j+1){
//如果答案更优
ans = k-j+1;
id = j;//记录起始位置
break;//再往后找没有意义了。break就好
}
}
}
for (int j = id;j <= id+ans-1;j++)
cout << s[i][j];
cout << endl;
}
return 0;
}
【Codeforces Round #434 (Div. 1) B】Polycarp's phone book的更多相关文章
- 【Codeforces Round #434 (Div. 2) B】Which floor?
[链接]h在这里写链接 [题意] 在这里写题意 [题解] 枚举每层有多少个公寓就好. 要注意,每次都要从1到100判断,一下那个公寓该不该出现在那一层. 多个答案,如果答案是一样的.也算是唯一的. ...
- 【Codeforces Round #434 (Div. 2) A】k-rounding
[链接]h在这里写链接 [题意] 在这里写题意 [题解] 转换一下就是求n和10^k的最小公倍数. [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++ ...
- 【Codeforces Round #432 (Div. 1) B】Arpa and a list of numbers
[链接]h在这里写链接 [题意] 定义bad list是一个非空的.最大公约数为1的序列.给定一个序列,有两种操作:花费x将一个元素删除.花费y将一个元素加1,问你将这个序列变为good list所需 ...
- 【Codeforces Round #420 (Div. 2) C】Okabe and Boxes
[题目链接]:http://codeforces.com/contest/821/problem/C [题意] 给你2*n个操作; 包括把1..n中的某一个数压入栈顶,以及把栈顶元素弹出; 保证压入和 ...
- 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees
[题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...
- 【Codeforces Round #420 (Div. 2) A】Okabe and Future Gadget Laboratory
[题目链接]:http://codeforces.com/contest/821/problem/A [题意] 给你一个n*n的数组; 然后问你,是不是每个位置(x,y); 都能找到一个同一行的元素q ...
- 【Codeforces Round #423 (Div. 2) C】String Reconstruction
[Link]:http://codeforces.com/contest/828/problem/C [Description] 让你猜一个字符串原来是什么; 你知道这个字符串的n个子串; 且知道第i ...
- 【Codeforces Round #423 (Div. 2) B】Black Square
[Link]:http://codeforces.com/contest/828/problem/B [Description] 给你一个n*m的格子; 里面包含B和W两种颜色的格子; 让你在这个格子 ...
- 【Codeforces Round #423 (Div. 2) A】Restaurant Tables
[Link]:http://codeforces.com/contest/828/problem/A [Description] 有n个组按照时间顺序来餐馆; 每个组由一个人或两个人组成; 每当有一个 ...
随机推荐
- 洛谷 P2614 计算器弹琴
P2614 计算器弹琴 题目描述 总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文.(参看洛谷P2549) 小A发现了一个计算器的另一个隐藏功能——弹琴. http://www.bilib ...
- 消灭星星的数组高效率算法(c++代码,控制台程序)
#include <iostream> using namespace std; #define ROW 12 #define COL 10 class Star { public: en ...
- IOS开发人员经常使用的10个Xcode插件
IOS开发人员经常使用的10个Xcode插件 申请达人,去除赞助商链接 一个合适的插件意味着它能够适应不同的开发环境,Sublime Text 和TextMate就是非常好的样例.你知道Xcode也支 ...
- WPF 布局控件 之 DockPanel
DockPanel为容器控件 主要了解其Dock属性和LastChildFill属性的使用 一.LastChildFill="True" 时 代码: <DockPanel L ...
- RPC简易学习
0.RPC简介 RPC, 英文全称:Remote Process Call. 中文全称:远程过程调用. 客户端通过网络请求调用远程服务端对外暴露服务.常用的两种RPC协议:TCP.HTTP. ...
- Ansible学习记录六:Tower安装
0.特别说明 1. 本文档没有特殊说明,均已root用户安装 2. 本文档中ftp传输文件的工具采用filezilla. 3. 本文档中的执行命令必须严格按照顺序而来. 4. 本文档中所用浏览器为Go ...
- 通过Gradle来下载依赖的jar包
前段时间在看Gradle文章方向其比ANT.Maven真的要简单很多,特别是在下载jar依赖方面下面就是用gradle写的一个jar包依赖下载的小例子: (1)建立build.gradle文件 (2) ...
- Java总结之线程
[线程的基本概念] 线程是一个程序内部的顺序控制流. 线程和进程的差别: 每一个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销. 线程能够看成是轻量级的进程,同一类线程 ...
- java移位操作符注意的问题
如果对char,byte或者short类型的数值进行移位处理,那么在移位进行之前,他们会被转为int类型, 并且所得到的结果也是一个int型. 若对long类型的数值进行处理所得到的结果也是long. ...
- Impala的安装(含使用CM安装 和 手动安装)(图文详解)
Impala有两种安装方式: 1)使用CM安装Impala 2)手动安装Impala 注意:Impala不支持在Debian/Ubuntu, SuSE, RHEL/CentOS 6.5系统中安装. 基 ...