思维+双指针+环——cf1244F
/*
可以发现一个性质:连续两个相同色块永远不会变色
继而可以发现,这个色段每次迭代都向左向右拓展长度1,直到撞上其他扩张的色段
所以预处理出所有连续色段,然后对于所有不在色段里的点,我们可以预测其最终的颜色:
其本身每次迭代改变一次颜色,如果k>= 离其最近的那个色段到其的距离Len,那么其就会被那个色段覆盖
那么就要预处理出这些点两侧最近的色段距离和颜色 由于是环形,所以扩张两倍即可来求边界
*/
#include<bits/stdc++.h>
#include<vector>
using namespace std;
#define N 400005 int f[N],c[N],k,n,L[N],R[N];
char s[N]; int main(){
cin>>n>>k;
memset(c,0x3f,sizeof c);
scanf("%s",s+);
for(int i=;i<=n;i++)
if(s[i]=='B')c[i]=c[i+n]=;
else c[i]=c[i+n]=;
c[]=c[n];c[*n+]=c[]; for(int i=;i<=*n;i++)
if(c[i]==c[i-] || c[i]==c[i+])
f[i]=;//连续点标记为1 //特判没有连续段,都是连续段
int cnt=;
for(int i=;i<=n;i++)cnt+=f[i];
if(cnt==){//无连续段
if(k%==){
printf("%s",s+);
}
else {
for(int i=;i<=n;i++)
if(s[i]=='B')cout<<'W';
else cout<<'B';
puts("");
}
return ;
}
else if(cnt==n){
printf("%s",s+);
return ;
} //处理左边界
int p=;
while(f[p+]!=)++p;//找到第一个连续色段
for(int i=p+;i<=*n;i++)
if(!f[i])L[i]=p;
else p=i; //处理右边界
p=*n+;
while(f[p-]!=)--p;
for(int i=p-;i>=;i--)
if(!f[i])R[i]=p;
else p=i;
//010011,010011
for(int i=;i<=n;i++){//回到环形上
if(!f[i] && L[i]==)
L[i]=L[i+n];
if(!f[i] && R[i]>n)
R[i]-=n;
} for(int i=;i<=n;i++)
if(f[i]){
cout<<s[i];
}
else {
int disl,disr;
if(L[i]>i)
disl=n-L[i]+i;
else
disl=i-L[i]; if(R[i]<i)
disr=R[i]+n-i;
else
disr=R[i]-i; int dis=min(disl,disr);
if(dis<=k){
if(disl<disr){//被左侧覆盖
if(disl<i)
cout<<s[i-disl];
else cout<<s[i+n-disl];
}
else {//被右侧覆盖
if(i+disr<=n)
cout<<s[i+disr];
else cout<<s[i+disr-n];
}
}
else {
int now=(c[i]+k)%;
if(now==)cout<<"B";
else cout<<"W";
}
}
puts("");
}
思维+双指针+环——cf1244F的更多相关文章
- Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) C. The Tower is Going Home(思维+双指针)
https://codeforces.com/contest/1075/problem/C 题意 一个宽为1e9*1e9的矩阵中的左下角,放置一个车(车可以移动到同一行或同一列),放置一些墙,竖的占据 ...
- Mouse Hunt CodeForces - 1027D(思维 找环)
Medicine faculty of Berland State University has just finished their admission campaign. As usual, a ...
- HDU 6103 Kirinriki (思维 双指针)
Kirinriki Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- CodeForces - 1007A (思维+双指针)
题意 https://vjudge.net/problem/CodeForces-1007A 对一个序列重排,使得新的数比原来的数大对应的位置个数最多. 思路 举个栗子,比如1 2 2 3 3 3 3 ...
- Codeforces Global Round 12 D. Rating Compression (思维,双指针)
题意:给你一长度为\(n\)的数组,有一长度为\(k\ (1\le k \le n)\)的区间不断从左往右扫过这个数组,总共扫\(n\)次,每次扫的区间长度\(k=i\),在扫的过程中,每次取当前区间 ...
- 第十二届湖南省赛 (B - 有向无环图 )(拓扑排序+思维)好题
Bobo 有一个 n 个点,m 条边的有向无环图(即对于任意点 v,不存在从点 v 开始.点 v 结束的路径). 为了方便,点用 1,2,…,n 编号. 设 count(x,y) 表示点 x 到点 y ...
- Codeforces Round #513 by Barcelona Bootcamp C. Maximum Subrectangle(双指针+思维)
https://codeforces.com/contest/1060/problem/C 题意 给两个数组,a数组有n个元素,b数组有m个元素,两个数组元素互相相乘形成n*m的矩阵,找一个子矩阵,元 ...
- CodeForces - 103B(思维+dfs找环)
题意 https://vjudge.net/problem/CodeForces-103B 很久很久以前的一天,一位美男子来到海边,海上狂风大作.美男子希望在海中找到美人鱼 ,但是很不幸他只找到了章鱼 ...
- Almost Acyclic Graph CodeForces - 915D (思维+拓扑排序判环)
Almost Acyclic Graph CodeForces - 915D time limit per test 1 second memory limit per test 256 megaby ...
随机推荐
- python--MySql 表记录的操作
表记录的增删改查 ---插入表记录 全列插入:insert into 表名 values(...) 缺省插入:insert into 表名(列1,...) values(值1,...) -- 插入一条 ...
- Mybatis基于接口注解配置SQL映射器(二)
Mybatis之增强型注解 MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码.但是注解对动态SQL的支持一直差强人意,即使My ...
- Qt 无法连接mysql数据库的问题
错误信息: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL ...
- 大碗宽面Beta迭代阶段第十二周会议记录
本周一晚上我们在熟悉的宿舍楼一楼大厅进行了本周的小组会议. 对于上周的任务,前端的同学修改统一了导航栏和footer,在课程评价界面中添加了“添加评论”功能,其中含有,是否修改过该课程的单选框,评论, ...
- 公司-ofo:ofo
ylbtech-公司-ofo:ofo ofo小黄车是一个无桩共享单车出行平台,缔造了“无桩单车共享”模式,致力于解决城市出行问题.用户只需在微信公众号或App扫一扫车上的二维码或直接输入对应车牌号,即 ...
- The document cannot be opened. It has been renamed, deleted or moved.
In the Individual components section of the Visual Studio Installer, make sure that Razor Language S ...
- 更改package.js后重新加载
node --save可有省略掉手动修改package.json的步骤 当你为你的模块安装一个依赖模块时,正常情况下你得先安装他们(在模块根目录下npm install module-name), ...
- 全局配置一个ajax的错误监控
全局配置一个ajax的错误监控,比如$(document).ajaxError(function(evt, req, settings){ if(req && (req.stat ...
- numpy的函数使用
目录 注 help ,帮助 numpy.genfromtxt,导入文件 array,创建数组(1,2维数组) array,创建行列向量 numpy.shape,看numpy数据的行列信息 numpy. ...
- Intellij IDEA 安装Scala插件 + 创建Scala项目
一.IDEA 2018 Ultimate edition (旗舰破解版下载地址) 百度网盘地址:https://pan.baidu.com/s/1d9ArRH6adhDUGiJvRqnZMw 二.I ...