【bzoj4319】cerc2008 Suffix reconstruction 贪心
题目描述
输入
输出
样例输入
4
2 3 4 1
样例输出
baab
题解
贪心
首先我们肯定是按照sa的顺序按照字典序从小到大设置字母,且尽量小。
那么我们只需要判断在确定一个新位置时能否放原来的字母。
根据sa的求法,我们比较两个后缀的大小时,如果第一位相同则比较后面的大小,相当于比较下一个后缀的rank。
所以我们可以先根据sa得到rank,比较时直接比较下一位字符串的rank的大小关系,如果新添加的位置的下一位字符串rank比上一个小,则需要增加新字母,否则不需要。
说了这么多还是不如直接看代码直白~
#include <cstdio>
#define N 500010
int sa[N] , rank[N];
char str[N];
int main()
{
int n , i;
char ch = 'a';
scanf("%d" , &n);
for(i = 1 ; i <= n ; i ++ ) scanf("%d" , &sa[i]) , rank[sa[i]] = i;
str[sa[1]] = ch;
for(i = 2 ; i <= n ; i ++ )
{
if(rank[sa[i] + 1] < rank[sa[i - 1] + 1]) ch ++ ;
if(ch > 'z')
{
printf("-1\n");
return 0;
}
str[sa[i]] = ch;
}
printf("%s\n" , str + 1);
return 0;
}
【bzoj4319】cerc2008 Suffix reconstruction 贪心的更多相关文章
- BZOJ4319 cerc2008 Suffix reconstruction 字符串 SA
原文链接http://www.cnblogs.com/zhouzhendong/p/9016336.html 题目传送门 - BZOJ4319 题意 给出一个$1,2,\cdots,n$的排列,第$i ...
- bzoj 4319 cerc2008 Suffix reconstruction——贪心构造
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4319 如果字符集有 5e5 那么大的话,挨个填上去就行了.但只有26个字符,所以要贪心地尽量 ...
- bzoj 4319: cerc2008 Suffix reconstruction 贪心
如果字符集无限大的话直接按照 $sa$ 的顺序依次填即可. 由于字符集非常小,所以要尽量填相同的字符. 我们知道 $sa$ 数组,也就知道了 $rank$ 数组. 那么考虑添加排名为 $i$ 的字符: ...
- BZOJ.4319.[cerc2008]Suffix reconstruction(后缀数组 构造 贪心)
题目链接 \(Description\) 给定SA数组,求满足SA[]的一个原字符串(每个字符为小写字母),无解输出-1. \(Solution\) 假设我们现在有suf(SA[j]),要构造suf( ...
- 【CERC2008】【BZOJ4319】Suffix reconstruction
Description 话说练习后缀数组时,小C 刷遍 poj 后缀数组题. 各类字符串题闻之丧胆.就在准备对敌方武将发出连环杀时,对方一记无中生有,又一招顺 手牵羊.小C 程序中的原字符数组就被牵走 ...
- bzoj 4319 Suffix reconstruction —— 贪心构造
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4319 思维还是不行...这样的构造都没思路... 首先,我们可以按 rank 的顺序从小到大 ...
- BZOJ 4319: cerc2008 Suffix reconstruction(后缀数组)
题面 Description 话说练习后缀数组时,小C 刷遍 poj 后缀数组题, 各类字符串题闻之丧胆.就在准备对敌方武将发出连环杀时,对方一记无中生有,又一招顺 手牵羊,小C 程序中的原字符数组就 ...
- bzoj 4319: Suffix reconstruction 后缀数组+构造
题目大意 给定后缀数组sa,要求构造出满足sa数组的字符串.或输出无解\(n\leq 5*10^5\) 题解 我们按照字典序来考虑每个后缀 对于\(Suffix(sa[i])\)和\(Suffix(s ...
- [CERC 2008] Suffix reconstruction
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4319 [算法] 首先 , 我们可以求出这个字符串的rank数组 按照SA逐位枚举 , ...
随机推荐
- 将C4C Service Request中的summary和其他附件同步到ERP的Billing Request去
C4C里将Service Request称为Work Ticket. 比如现在我的Service Request有两个行项目,只有第一个需要同步到ERP去.但是第二个行项目对于客户检查Invoice来 ...
- 如何给SAP Cloud Connector Region列表中添加新的Region
SAP help里提供了CloudFoundry和Neo环境下可用的Region和API endpoint: 当我们期望用SAP Cloud Connector连接某个SAP云平台Region时,一般 ...
- Logback文档(1)
http://b6ec263c.wiz03.com/share/s/2SX2oY0nX4f32CY5ax1bapaL030VCK2svQZU2rRyDR05KMh5
- HTML5中的SSE(服务器推送技术)
本文原链接:https://cloud.tencent.com/developer/article/1194063 SSE技术详解:一种全新的HTML5服务器推送事件技术 前言 概述 基本介绍 与We ...
- python之文件操作的初识
1. 操作文件 1.1 操作的方法 f = open("文件路径",mode="模式",encoding="编码") open() # 调用 ...
- 面向对象OONo.3单元总结
一,JML语言 1)JML理论基础:JML是一类语言,用来描述一个方法或一个类的功能.以及这个类在实现这个功能时需要的条件.可能改变的全局变量.以及由于条件问题不能实现功能时这个方法或类的行为,具有明 ...
- 万恶之源 Python
学IT真他妈难受 从早上起来坐到晚上 一天对着电脑啪啪啪
- javaweb基础(16)_jsp指令
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect方言解决无法服务器启动自动update创建表问题
除之前的Spring相关包,还有structs2包外,还需要Hibernate的相关包 首先,Spring整合其他持久化层框架的JAR包 spring-orm-4.2.4.RELEASE.jar ( ...
- jq 下拉框
<div class="alls"> <div class="item"> <div class="all"& ...