【CERC2008】【BZOJ4319】Suffix reconstruction
Description
话说练习后缀数组时,小C 刷遍 poj 后缀数组题。 
各类字符串题闻之丧胆。就在准备对敌方武将发出连环杀时,对方一记无中生有,又一招顺 
手牵羊。小C 程序中的原字符数组就被牵走了。幸运的是。小C 早已经求出了 SA[],为了 
能东山再起,迅速 A 掉此题,他希望各位忠臣们能帮忙求出一组原字符数组的可行方案。
已 
知原字符数组由小写拉丁字母组成。
且小C的SA[]也是有可能求错的。 原数组可能不存在。  
Input
输入文件仅仅有一行且为用空格隔开的一个正整数 N。  
接下来一行有 N 个数,为 1~N 的排列。
当中对于 100%的数据 N≤500000 
Output
一行有 N 个小写拉丁字母。若不存在合法方案输出-1;  
Sample Input
4
2 3 4 1  
Sample Output
dabc  
HINT
Source
鸣谢Claris提供SPJ
由于有SPJ所以不虚 
尽量让构造出的那个字符串的字典序小的话,就能够随便构造了 
然后假设最大的字符超过了小写字母肯定就是不合法了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 500010
#define GET (ch>='0'&&ch<='9')
using namespace std;
int n;
int sa[MAXN],rank[MAXN];
char last='a',ch[MAXN];
void in(int &x)
{
    char ch=getchar();x=0;
    while (!GET)    ch=getchar();
    while (GET) x=x*10+ch-'0',ch=getchar();
}
int main()
{
    in(n);
    for (int i=1;i<=n;i++)  in(sa[i]),rank[sa[i]]=i;
    ch[sa[1]]=last;
    for (int i=2;i<=n;i++)
    {
        if (rank[sa[i-1]+1]>rank[sa[i]+1])  last++;
        if (last>'z')   {puts("-1");return 0;}
        ch[sa[i]]=last;
    }
    for (int i=1;i<=n;i++)  putchar(ch[i]);
}【CERC2008】【BZOJ4319】Suffix reconstruction的更多相关文章
- 【java   上传+下载】
		一.先说说上传 第一步:pom.xml文件 加上 上传文件依赖架包 <dependency> <groupId>commons-fileupload</groupId&g ... 
- 【Spring源码分析】配置文件读取流程
		前言 Spring配置文件读取流程本来是和http://www.cnblogs.com/xrq730/p/6285358.html一文放在一起的,这两天在看Spring自定义标签的时候,感觉对Spri ... 
- 【spring源码分析】IOC容器初始化(三)
		前言:在[spring源码分析]IOC容器初始化(二)中已经得到了XML配置文件的Document实例,下面分析bean的注册过程. XmlBeanDefinitionReader#registerB ... 
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
		作者:ssslinppp 时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ... 
- 47. Spring Boot发送邮件【从零开始学Spring Boot】
		(提供源代码) Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看如何在Spring Bo ... 
- (19)Spring Boot 添加JSP支持【从零开始学Spring Boot】
		[来也匆匆,去也匆匆,在此留下您的脚印吧,转发点赞评论: 您的认可是我最大的动力,感谢您的支持] 看完本文章您可能会有些疑问,可以查看之后的一篇博客: 81. Spring Boot集成JSP疑问[从 ... 
- (18)使用模板(thymeleaf-freemarker)【从零开始学Spring Boot】
		整体步骤: (1) 在pom.xml中引入thymeleaf; (2) 如何关闭thymeleaf缓存 (3) 编写模板文件.html ... 
- 14 微服务电商【黑马乐优商城】:day01-springboot(理论篇)
		本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) :day01-springboot(Thyme ... 
- 【疯狂造轮子-iOS】JSON转Model系列之二
		[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ... 
- 【疯狂造轮子-iOS】JSON转Model系列之一
		[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ... 
随机推荐
- python学习(day2)
			1.常用数据类型及内置方法 1.列表(list) 定义:在中括号[]内存放任意多个值,用逗号隔开. 具体函数和内置方法如下: #定义学生列表,可存放多个学生 students=['a','b','c' ... 
- 解决【npm ERR! Unexpected end of JSON input while parsing near '...sh_time":141072930277'】方案
			问题描述执行npm install的时候报错npm ERR! Unexpected end of JSON input while parsing near '...sh_time":141 ... 
- eclipse包分层
			方法很简单,如下图所示: 1.点击项目栏窗口的右上角的倒三角 2.选择Pachage Presentation(包呈现) 3.选择Hierarchical(分层) 
- javascript的prototype经典使用场景
			prototype的经典使用场景就是为对象增加属性和方法,如给自定义的Man对象增加个姓名属性和语言方法: function man() { this.age = "22&qu ... 
- Python飞机大战实例有感——pygame如何实现“切歌”以及多曲重奏?
			目录 pygame如何实现"切歌"以及多曲重奏? 一.pygame实现切歌 初始化路径 尝试一 尝试二 尝试三 成功 总结 二.如何在python多线程顺序执行的情况下实现音乐和音 ... 
- poj3134 Power Calculus
			题目描述: 你现在有x^1,每动一步可以用当前存在的x^a和x^b获得x^(a+b)或x^(abs(a-b)).给出n(n<=1000),求最少多少步能得到x^n. 题解: IDDFS.枚举步数 ... 
- [bzoj2806][Ctsc2012]Cheat(后缀自动机(SAM)+二分答案+单调队列优化dp)
			偷懒直接把bzoj的网页内容ctrlcv过来了 2806: [Ctsc2012]Cheat Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1943 ... 
- PHP导出超大的CSV格式的Excel表方案
			场景和痛点 说明 我们工作场景都常会导出相关的excel数据,有时候需要大量的数据,10W,100W都有可能 我们现有方案都是直接利用phpexcel等类库来操作,phpexcel的load加载或是写 ... 
- Tensor数据类型
			目录 Tensor数据类型 属性 数据类型判断 数据类型转换 tensor转numpy Tensor数据类型 list: [1,1.2,'hello'] ,存储图片占用内存非常大 np.array, ... 
- python第一章计算机基础
			第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 / 显示器 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 操作系统用 ... 
