如果字符集无限大的话直接按照 $sa$ 的顺序依次填即可.

由于字符集非常小,所以要尽量填相同的字符.

我们知道 $sa$ 数组,也就知道了 $rank$ 数组.

那么考虑添加排名为 $i$ 的字符:

如果 $rank[sa[i-1]+1]>rank[sa[i]+1]$,说明 $sa[i]$ 的字典序必须比 $sa[i-1]$ 的字典序大,新建字符.

否则,就不用新建字符.

这么做下去即可.

code:

#include <bits/stdc++.h>
#define N 503000
#define LL long long
using namespace std;
void setIO(string s)
{
string in=s+".in";
freopen(in.c_str(),"r",stdin);
}
char str[N];
int sa[N],rk[N];
int main()
{
// setIO("input");
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d",&sa[i]);
rk[sa[i]]=i;
}
int ch=0;
str[sa[1]]=ch+'a';
for(i=2;i<=n;++i)
{
if(rk[sa[i]+1]<rk[sa[i-1]+1]) ++ch;
if(ch>=27)
{
printf("-1\n");
return 0;
}
str[sa[i]]=ch+'a';
}
printf("%s",str+1);
return 0;
}

  

最新文章

  1. padding和margin的区别
  2. 《笨办法学C》笔记之Makefile
  3. freemarker初级教程(一)
  4. LightOJ 1317 第八次比赛 A 题
  5. 通过js获取DropDownList的选中项
  6. (DT系列一)DTS结构及其编译方法
  7. C++ primer 中文第三版 阅读笔记 第八章
  8. freemark换行输出
  9. Redis 优化查询性能
  10. python3 第十四章 - 数据类型之Dictionary(字典)
  11. python 函数基础2
  12. WinForm DataGridView双向数据绑定
  13. Kubernetes节点维护
  14. Elasticsearch 分片路由原理指定分片存储查询
  15. windows 上搭建gitblit
  16. linux+nginx+phpfpm 访问出现Access denied错误解决方案
  17. 百度地图Api进阶教程-默认控件和自定义控件2.html
  18. 实验1 熟悉Linux开发环境 实验报告
  19. d3js把circle和rect连接在一起
  20. asp.net SessionState模式的配置及使用

热门文章

  1. 【统计与建模】R语言基本操作
  2. Shiro授权及注解式开发
  3. Hibernate持久化,生命周期
  4. 音视频入门-09-RGB&amp;YUV互转-使用开源库
  5. Powershell学习笔记:(一)、初识Powershell
  6. java第一次笔试+面试总结
  7. VBA Do...While循环
  8. ribbon的理解
  9. Questasim10.6c下载安装教程
  10. OpenStack kilo版(5) Neutron部署