SSL2770 2017年10月17日提高组 神奇变化
2017-10-18 20:47
211 查看
2017年10月17日提高组 神奇变化
Description给定一个有n个数字的序列,记作{an},需要进行k次操作,每次操作找到最小的x使得a(x)=2,a(x+1)=3,如果x为奇数,则令d(x+1)=2,反之令d(x)=3,若没有这样的x则数字不变。
求k此操作之后原数列会变成什么
Input
本题有多组数据。
每组数据第一行是两个正整数n,k分别表示数字个数和操作次数
第二行有n个数字,数字之间没有空格
Output
对每组数据输出一行为最终的数列
分析:据大佬说:很显然的题目,直接O(n)扫一遍就好。。。(tips:不难发现到223或233时会循环。)
代码
#include <cstdio> #include <string> #include <cstring> #define maxn 2000000 using namespace std; int n,k; char a[maxn]; int main() { while(~scanf("%d%d",&n,&k)) { int p=0; scanf("%s",a+1); int i=1; while (i<=n&&k>0) { if (a[i]=='2'&&a[i+1]=='3') { int mo=i%2; if (a[i+2]=='3'&&mo==1) break; if (mo==0) { a[i]='3'; i--; k--; continue; } else { a[i+1]='2'; i++; k--; continue; } } i++; } k%=2; if (k==1) a[i+1]='2'; for (int i=1;i<=n;i++) printf("%c",a[i]); printf("\n"); } }
相关文章推荐
- 【SSLGZ 2770】2017年10月17日提高组 神奇变化
- NOIP2015复赛提高组day1(A:神奇的幻方 B:信息传递 C:斗地主)
- NOIP 2015 提高组 Day1 神奇的幻方
- SSL2772 2017年10月17日提高组 被关押的ymw(prim)
- 使用 libevent 和 libev 提高网络应用性能——I/O模型演进变化史
- 【NOIP】提高组2015 神奇的幻方
- 【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇:DirectX初始化四步曲
- 这几个动图告诉你科学的神奇,看完瞬间觉得智商都提高了
- 【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇:DirectX初始化四步曲
- luogu2615 神奇的幻方(NOIP2015提高组第1题)
- NOIP2015 提高组 复赛 day1 magic 神奇的幻方
- 【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇:DirectX初始化四步曲
- 【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇:DirectX初始化四步曲
- Noip2015提高组Day1 “神奇的幻方”题解
- 【NOIP2015提高组Day1】 神奇的幻方
- matlab运行出现“变量似乎会随着迭代次数改变而变化,请预分配内存,以提高运行速度”问题
- 神奇的幻方 NOIP2015 提高组 Day1 T1
- 切换和层叠状态变化接收器以提高效率
- [NOIP2015] 提高组 洛谷P2615 神奇的幻方
- 这几个动图告诉你科学的神奇,看完瞬间觉得智商都提高了