JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation
生活随笔
收集整理的这篇文章主要介绍了
JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Description
Input
Output
Sample Input
7 2
2343223
4 1
2234
Sample Output
2243233
2334
Data Constraint
Hint
Solution
这题就是一道模拟题。
首先,我们显然可以发现性质①:显然操作一定是一直往后的,不会突然在前面找到一个合适的。
那么通过性质①,我们可以直接扫一遍,时间复杂度 O(N+K) ,可以通过 70 分。
通过观察,我们又可以发现性质②:出现“223”或“233”时,若奇偶性满足,就会一直循环。
于是我们根据性质②,出现上述情况时判一下奇偶性即可 O(N) 解决,即可得 100 分。
Code
#include<cstdio> using namespace std; const int N=1e6+5; int n,k; char s[N]; int main() {while(~scanf("%d%d",&n,&k)){scanf("%s",s+1);for(int i=1;i<n && k;i++)if(s[i]=='2' && s[i+1]=='3')if(i&1){s[i+1]='2';k--;if(i+1<n && s[i+2]=='3') k=k%2;}else{s[i--]='3';k--;if(i) i--;if(s[i+1]=='2') k=k%2;}printf("%s\n",s+1);}return 0; }总结
以上是生活随笔为你收集整理的JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: JZOJ 5267. 费马点问题
- 下一篇: JZOJ 5393. 【NOIP2017