构造字符串(hdu2970Suffix reconstruction)
来源:互联网 发布:手机淘宝卖家版登陆 编辑:程序博客网 时间:2024/06/07 21:53
Suffix reconstruction
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 278 Accepted Submission(s): 150
Problem Description
Given a text s[1..n] of length n, we create its suffix array by taking all its suffixes: s[1..n], s[2..n],...., s[n..n] and sorting them lexicographically. As a result we get a sorted list of suffixes: s[p(1)..n], s[p(2)..n],..., s[p(n)..n] and call the sequence p(1),p(2),...,p(n) the suffix array of s[1..n].
For example, if s = abbaabab, the sorted list of all suffixes becomes: aabab, ab, abab, abbaabab, b, baabab, bab, bbaabab and the suffix array is 4, 7, 5, 1, 8, 3,6, 2.
It turns out that it is possible to construct this array in a linear time. Your task will be completely different, though: given p(1), p(2), p(3),... , p(n) you should check if there exist at least one text consisting of lowercase letters of the English alphabet for which this sequence is the suffix array. If so, output any such text. Otherwise output -1.
For example, if s = abbaabab, the sorted list of all suffixes becomes: aabab, ab, abab, abbaabab, b, baabab, bab, bbaabab and the suffix array is 4, 7, 5, 1, 8, 3,6, 2.
It turns out that it is possible to construct this array in a linear time. Your task will be completely different, though: given p(1), p(2), p(3),... , p(n) you should check if there exist at least one text consisting of lowercase letters of the English alphabet for which this sequence is the suffix array. If so, output any such text. Otherwise output -1.
Input
The input contains several descriptions of suffix arrays. The first line contains the number of descriptions t (t <= 100). Each description begins with a line containing the length of both the text and the array n (1 <= n <= 500000). Next line contains integers p(1), p(2), ... ,p(n). You may assume that 1 <= p(i) <= n and no value of p(i) occurs twice. Total size of the input will not exceed 50MB.
Output
For each test case
If there are multiple answers, output the smallest dictionary order in the given suffix array. In case there is no such text consisting of lowercase letters of the English alphabet, output -1.
If there are multiple answers, output the smallest dictionary order in the given suffix array. In case there is no such text consisting of lowercase letters of the English alphabet, output -1.
Sample Input
621 222 132 3 163 4 5 1 2 6143 10 2 12 14 5 13 4 1 8 6 11 7 975 1 7 4 3 2 6
Sample Output
abaababbcaaadebadcfgehagbdcbcccadc
题意:给出排名第i的是从第几个位置开始的后缀,让你构造出满足条件的字符串
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<vector>#include<cmath>#include<queue>#include<stack>#include<map>#include<set>#include<algorithm>using namespace std;const int maxn=600010;int sa[maxn],Rank[maxn];char s[maxn];int N;int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d",&N); for(int i=1;i<=N;i++) { scanf("%d",&sa[i]); Rank[sa[i]]=i; } Rank[N+1]=-1; int k=0; s[sa[1]]=k+'a'; for(int i=2;i<=N;i++) { int x=sa[i-1],y=sa[i]; if(Rank[x+1]>Rank[y+1])k++; s[sa[i]]=k+'a'; } if(k>=26)printf("-1\n"); else { s[N+1]=0; printf("%s\n",s+1); } } return 0;}
0 0
- 构造字符串(hdu2970Suffix reconstruction)
- ZOJ3732 Graph Reconstruction(图的构造)
- zoj 3732 Graph Reconstruction(构造)
- bzoj 4319: cerc2008 Suffix reconstruction(构造)
- [BZOJ4319]cerc2008 Suffix reconstruction(贪心+构造+后缀数组)
- zoj 3732 Graph Reconstruction(构造)
- zoj 3732 Graph Reconstruction 构造
- Codeforces Round #423 (Div. 2) C. String Reconstruction(字符串)
- BZOJ 4319: cerc2008 Suffix reconstruction|贪心构造
- 【BZOJ4319】cerc2008 Suffix reconstruction【构造】【后缀数组】
- UVA10410 - Tree Reconstruction(队列)
- hdu2970 Suffix reconstruction 后缀数组反过来构造串
- UVA 10410 - Tree Reconstruction(树)
- UVa 10410 - Tree Reconstruction(树)
- 406. Queue Reconstruction by Height (Medium)
- [BZOJ4319][cerc2008]Suffix reconstruction(贪心)
- CodeForces 828C String Reconstruction(思维)
- 406. Queue Reconstruction by Height(greedy)
- Apple WatchKit 基础篇
- 抽象接口的过程小结
- android笔试题
- 操作系统中的进程与线程(实现线程的几种模式)
- struts2中,xxx-validation.xml校验文件不起作用
- 构造字符串(hdu2970Suffix reconstruction)
- 走在一条怎样的道路上
- view.getX和view.getTranslationX的区别
- 数据库相对路径写法,及使用
- ftp 创建目录
- 自定义View之顶部导航栏
- Sicily 1350. Piggy banks
- JDK+MyEclipse+Tomcat的配置
- 打开CHM后无法连接到网页