题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4319

如果字符集有 5e5 那么大的话,挨个填上去就行了。但只有26个字符,所以要贪心地尽量填和上一次一样的字符。

按 sa[ ] 的顺序从小到大填字符,判断这个位置 x 能否填上一次在 y 填的字符的条件就是 rk[ x+1 ] > rk[ y+1 ]。

  因为 x 的字典序比 y 大,而 x 位置要填和 y 一样的字符,所以 x 的后面应该比 y 大。发现后面部分也是两个后缀,所以利用“接下来会使它们合法”这一限制,就能判断 x 位置填什么了。

自己的思路有待锻炼!要尝试归纳限制条件!

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=5e5+5;
int n,sa[N],rk[N];
char a[N];
int rdn()
{int ret=0;bool fx=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-')fx=0;ch=getchar();}while(ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar();return fx?ret:-ret;
}
int main()
{n=rdn();for(int i=1;i<=n;i++)sa[i]=rdn(),rk[sa[i]]=i;int i,p=0;a[sa[1]]=0;for(i=2;i<=n;i++){if(rk[sa[i]+1]>rk[sa[i-1]+1])a[sa[i]]=p;else {a[sa[i]]=++p;if(p==26)break;}}if(i<=n)puts("-1");else {for(int i=1;i<=n;i++)putchar(a[i]+'a');puts("");}return 0;
}

转载于:https://www.cnblogs.com/Narh/p/10079748.html

bzoj 4319 cerc2008 Suffix reconstruction——贪心构造相关推荐

  1. bzoj 4319: cerc2008 Suffix reconstruction(构造)

    4319: cerc2008 Suffix reconstruction Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special Judge Subm ...

  2. [BZOJ4319][cerc2008]Suffix reconstruction(贪心)

    === === 这里放传送门 === === 题解 这题发题解的时候纠结了半天挂什么tag..后缀数组?这哪里用后缀数组了..暴力?感觉好敷衍..最后还是决定挂上贪心的tag好了... ATP一开始看 ...

  3. 贪心+构造 Codeforces Round #277 (Div. 2) C. Palindrome Transformation

    题目传送门 1 /* 2 贪心+构造:因为是对称的,可以全都左一半考虑,过程很简单,但是能想到就很难了 3 */ 4 /**************************************** ...

  4. 2021年度训练联盟热身训练赛第五场 H题In-place Sorting+贪心构造

    题意: 给你n个小于101810^{18}1018的大数,问在可以再不改变序列位置,之改变数值中某数位的'9'变为'6'或将'6'变为'9',求的最终序列由小到大,且字典序最小. 题目: 链接:htt ...

  5. 【牛客 - 318G】LLLYYY的数字思维 与【牛客 - 289J】这是一个沙雕题II(贪心构造)

    题干: LLLYYY很喜欢写暴力模拟贪心思维.某一天在机房,他突然抛给了队友ppq一 个问题.问题如下: 有一个函数f (): int f(int x){     int tmp = 0;     w ...

  6. 字符串——BZOJ 3097: Hash Killer I【构造题,思维题】

    BZOJ 3097: Hash Killer I[构造题,思维题] 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3097 题意:让你出一组 ...

  7. 常规贪心构造题 最多能完成排序的块 II

    这是 LeetCode 上的  最多能完成排序的块 II ,难度为 困难. Tag : 「贪心」 这个问题和"最多能完成排序的块"相似,但给定数组中的元素可以重复,输入数组最大长度 ...

  8. BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)

    题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...

  9. bzoj 1045 [HAOI2008] 糖果传递 —— 贪心

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1045 好像是贪心...但这是一个环... 看博客:http://hzwer.com/2656 ...

最新文章

  1. android下使用tcpdump抓包
  2. [转帖]Docker里运行Docker docker in docker(dind)
  3. 循环冗余校验码CRC,求解步骤
  4. php接收rs485的数据如何处理,为什么485不能连续接收?
  5. Linux加载Linux的引导程序,Linux的引导-引导加载程序:LILO和GRUB
  6. C语言volatile关键字—最易变的关键字
  7. 一维数组转化为二维数组(java)
  8. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-7.App Widgets)...
  9. voip 客户端 android,Android基于OpenSL ES,Speex,RTMP的Voip客户端实现
  10. Mysql数据库和表的操作
  11. 【开源】有手就能做的街机游戏
  12. 三种技术类型的3D摄像头大体总结 3D人脸识别
  13. abb机器人编程指令goto指令_ABB机器人~编程基本指令之运动指令
  14. top n with ties
  15. 国外渗透教学——CBT 国外的道德黑客Nuggets
  16. Linux性能优化实战:如何“快准狠”找到系统内存的问题?(21)
  17. diskgenius系统迁移_手把手教你如何优化windows7操作系统
  18. 计算机组成原理基本概念
  19. LC-3 指令集注释规范
  20. 2020年IDA插件大赛:DynDataResolver夺冠

热门文章

  1. c语言程序设计工资纳税系统流程图,c语言程序设计,纳税工资系统.doc
  2. 九、Pandas高级处理
  3. LeetCode 2176. 统计数组中相等且可以被整除的数对
  4. LeetCode 1689. 十-二进制数的最少数目(脑筋急转弯)
  5. LeetCode 1152. 用户网站访问行为分析
  6. LeetCode MySQL 1113. 报告的记录
  7. seaborn绘图入门2(distplot+kdeplot+jointplot+set_style)
  8. 程序员面试金典 - 面试题 10.05. 稀疏数组搜索(二分查找)
  9. LeetCode 1317. 将整数转换为两个无零整数的和
  10. LeetCode 1009. 十进制整数的反码(位运算)