2019.03.28 bzoj3325: [Scoi2013]密码(manacher+模拟)
传送门
题意:
现在有一个nnn个小写字母组成的字符串sss。
然后给你nnn个数aia_iai,aia_iai表示以sis_isi为中心的最长回文串串长。
再给你n−1n-1n−1个数bib_ibi,bib_ibi表示以si,si+1s_i,s_{i+1}si,si+1中间空隙为中心的最长回文串串长。
问你满足条件的所有sss串中字典序最小的那个。
思路:
可以根据aia_iai和bib_ibi逆模拟manachermanachermanacher的过程贪心构造这个sss。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
const int rlen=1<<18|1;
inline char gc(){
static char buf[rlen],*ib,*ob;
(ib==ob)&&(ob=(ib=buf)+fread(buf,1,rlen,stdin));
return ib==ob?-1:*ib++;
}
inline int read(){
int ans=0;
char ch=gc();
while(!isdigit(ch))ch=gc();
while(isdigit(ch))ans=((ans<<2)+ans<<1)+(ch^48),ch=gc();
return ans;
}
const int N=2e5+5;
bool ban[N][26];
int n,col[N],r[N],mx=0,id=0;
int main(){
n=read(),r[1]=1;
for(ri i=1,j=2;i<=n;++i,j+=2)r[j]=read()+1,col[j]=-1;
for(ri i=1,j=3;i<n;++i,j+=2)r[j]=read()+1,col[j]=-1;
for(ri i=1,pos;i<=n<<1;++i){
if(i&1)col[i]=26;
else if(col[i]==-1)for(ri j=0;j<26;++j)if(!ban[i][j]){col[i]=j;break;}
pos=id+mx>i?min(id+mx-i,r[id*2-i]):1;
while(pos<r[i])col[i+pos]=col[i-pos],++pos;
if(i-r[i]>1&&(i-r[i])%2==0)ban[i+r[i]][col[i-r[i]]]=1;
if(i+r[i]>mx)mx=r[i],id=i;
if(!(i&1))cout<<(char)(col[i]+'a');
}
return 0;
}
2019.03.28 bzoj3325: [Scoi2013]密码(manacher+模拟)的更多相关文章
- 2019.03.28 bzoj3322: [Scoi2013]摩托车交易(kruskal重构树+贪心)
传送门 题意咕咕咕 思路: 先把所有可以列车通的缩成一个点,然后用新图建立kruskalkruskalkruskal重构树. 这样就可以倒着贪心模拟了. 代码: #include<bits/st ...
- 2019.03.28 bzoj3326: [Scoi2013]数数(数位dp)
传送门 题意: 一个人数数,规则如下: 确定数数的进制B 确定一个数数的区间[L, R] 对于[L, R] 间的每一个数,把该数视为一个字符串,列出该字符串的所有连续子串对应的B进制数的值. 对所有列 ...
- 【BZOJ3325】[Scoi2013]密码 Manacher
[BZOJ3325][Scoi2013]密码 Description Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进. ...
- 【bzoj3325】[Scoi2013]密码 逆模拟Manacher
题目描述 给出一个只包含小写字母的字符串的长度.以每一个字符为中心的最长回文串长度.以及以每两个相邻字符的间隙为中心的最长回文串长度,求满足条件的字典序最小的字符串. 输入 输入由三行组成.第一行仅含 ...
- BZOJ 3325 [SCOI2013]密码 (逆模拟Manacher+构造)
题目大意:给你一个字符串每个位置和相邻两个位置为回文中心的最长回文串长度,让你构造一个合法的字典序最小的字符串 挺有意思的构造题 首先按照$Manacher$的思想还原$p$数组 定义$f_{ij}$ ...
- BZOJ3325 [Scoi2013]密码【Manacher】【构造】【贪心】
Description Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信 ...
- BZOJ3325 [Scoi2013]密码 【manacher】
题目 Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信息: 该密码的长度 ...
- BZOJ3325 : [Scoi2013]密码
从以每一位为中心的回文串长度可以用Manacher倒推出$O(n)$对相等和不等关系. 将相等的用并查集维护,不等的连边. 然后输出方案时若还没被染过色,则求一个mex. #include<cs ...
- 2019.03.29 bzoj3323: [Scoi2013]多项式的运算(非旋treap)
传送门 题意:定义一个无穷项的多项式f(x)f(x)f(x),初始各项系数都为0,现在有几种操作 将xLx^LxL到xRx^RxR这些项的系数乘上某个定值v 将xLx^LxL到xRx^RxR这些项的系 ...
随机推荐
- XACT_ABORT选项
XACT_ABORT选项用于指定当SQL语句出现运行时错误时,SQL Server是否自动回滚到当前事务.其语法格式如下所示: SET XACT_ABORT{ON|OFF} 当SET XACT_ABO ...
- 100-days: twenty-one
Title: Not so fantastic(<口>极好的,棒的): can Japan end its love affair(喜爱,热爱) with plastic(塑料)? A : ...
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-8CDH5安装和集群配置
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了. 准备文件 从 http://archive.cloudera.com/cdh5/par ...
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-5安装JDK及安装mysql数据库
1.安装JDK 可以不用卸载自带的openjdk,配好环境变量即可. 下载文件:jdk-8u151-linux-x64.tar.gz 附:JDK各版本下载地址:https://www.oracle.c ...
- Taro-ui TabBar组件使用路由跳转
1. 安装taro-ui (此处使用cnpm) cnpm install taro-ui 2. 全局引入样式 app.scss sass :@import "~taro-ui/dist/st ...
- MySQL联接查询算法(NLJ、BNL、BKA、HashJoin)
一.联接过程介绍 为了后面一些测试案例,我们事先创建了两张表,表数据如下: 1 2 3 4 CREATE TABLE t1 (m1 int, n1 char(1)); CREATE TABLE t ...
- SNORT入侵检测系统
SNORT入侵检测系统 YxWa · 2015/10/09 10:38 0x00 一条简单的规则 alert tcp 202.110.8.1 any -> 122.111.90.8 80 (ms ...
- JavaScript数据类型,构造函数
JavaScript 的数据类型分为两类:原始类型和对象类型. JavaScript中的原始类型包括数字.字符串和布尔值 JavaScript中有两种特殊的原始值:null和undefined. Ja ...
- SpringBoot图片上传
毕设终于写到头像上传了,本来想用Vue写来着,但是一直不顺利,还是对Vue用的不太熟.所以就用jquery写了. 首先添加以下标签 <img id="avatarPreview&quo ...
- IDEA高效运用技巧
windows: //快捷鍵 1.项目之间的切换快捷键:Ctrl+Alt+[]. 2.文件之间切换快捷键:Ctrl+Alt+左右箭头. 3.返回到上一次修改的地方:Ctrl+Q. 4.查找打开过的文件 ...