思维+双指针+环——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 ...
随机推荐
- 【多线程】synchronized 和ReentrantLock
1. 锁的实现 synchronized 是 JVM 实现的,而 ReentrantLock 是 JDK 实现的. 2. 性能 新版本 Java 对 synchronized 进行了很多优化,例如自旋 ...
- percona-toolkit工具包的安装和初步使用
percona-toolkit工具包的安装和初步使用 原文地址:http://blog.csdn.net/yumushui/article/details/42919601 一.percona-too ...
- 当前系统的CPU和内存的空闲百分比
设想我们有一个php页面A比较耗资源,因此在每次执行页面A中的代码前需要检测一下系统目前CPU和内存的空闲百分比.我们可以利用下面几个函数来解决这个问题 1 2 3 4 5 6 7 8 9 10 11 ...
- 62、saleforce的schedule
//需要实现 Schedulable接口,实现 execute方法 public class MerchandiseSchedule implements Schedulable{ public vo ...
- grep 后加单引号、双引号和不加引号的区别
请尊重版权,原文地址:https://blog.csdn.net/cupidove/article/details/8783968 单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为 ...
- java中接口的简单运用&java中的一些异常(运用myeclipse)
package test;//创建一个名为test的包 public class A4paper implements Paper { public String getSize(){ return& ...
- InnoDB与Myisam比较
InnoDB与Myisam比较 ...
- shell编程:字符串练习题string.sh
string.sh脚本 #!/bin/bash # string="Bigdata process framework is Hadoop,Hadoop is an open source ...
- [已解决]报错: twisted 18.7.0 requires PyHamcrest>=1.9.0
1.下载对应的Twisted,下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 2.通过Anaconda3的Anaconda Promp ...
- html - body标签中相关标签
body标签中相关标签 今日内容: 字体标签: h1~h6.<font>.<u>.<b>.<strong><em>.<sup> ...