【CODEFORCES】 C. No to Palindromes!
来源:互联网 发布:传奇霸业转生修为数据 编辑:程序博客网 时间:2024/05/21 11:09
题解:这道题看似简单,实际上出的还是很好的。
一开始用暴力,发现在第20多个点超时之后才想到优化一下。
一开始从最低位开始加,然后返回此次过程中改变的最高位的位置i,然后从第i位向后检查第i位是否和i-1位,i-2位相等,如果相等,第i位就继续a[i]++,然后再判断………………
这样如此往复,我们可以让add(i)表示执行a[i]++(并且同时进位)并返回所改变的最高位的值,check(i)表示从第i位向后检查是否合法,如果不合法就返回不合法的位置,如果合法就输出解。
注意:add(i)和check(i)是一个循环往复的过程。
#include <iostream>#include <cstring>#include <cstdio>using namespace std;char s[1002],a[1002];int n,p,i,x;int add(int k){ int i=k,t; a[i]++; t=0; while (a[i]-96>p && i>=0) { t=1; a[i]='a'; i--; a[i]+=t; } return i;}int _check(int k){ for (int i=k;i<=n-1;i++) if (a[i]==a[i-1] || a[i]==a[i-2]) return i; return n;}int main(){ scanf("%d%d",&n,&p); scanf("%s",&s); for (int i=0;i<=n;i++) a[i]=s[i]; i=n-1; while (1) { x=add(i); if (x==-1) { cout <<"NO"<<endl; return 0; } i=_check(x); if (i==n) { printf("%s",a); return 0; } } return 0;}
0 0
- 【CODEFORCES】 C. No to Palindromes!
- Codeforces Round #265 (Div. 2) C.No to Palindromes!
- Codeforces Round #265 (Div. 2) C. No to Palindromes!
- Codeforces Round #265(div2) C. No to Palindromes!
- Codeforces Round #265 (Div. 2) C. No to Palindromes!
- Codeforces Round #265 (Div. 2) C - No to Palindromes!
- Codeforces Round #265 (Div. 2)-C. No to Palindromes!
- Codeforces 465C No to Palindromes!【暴力+思维】
- Codeforces 464A No to Palindromes!(构造)
- codeforces 464A No to Palindromes! 贪心
- Codeforces 464 A. No to Palindromes!
- 【codeforces】 464A No to Palindromes!
- codeforces 464A No to Palindromes! 贪心
- Codeforces 464A No to Palindromes!
- Codeforces 464A No to Palindromes!
- codeforces 464A No to Palindromes! 贪心
- Codeforces Round #265 (Div. 2) C. No to Palindromes!(字符串+构造??)
- CF 265DIV2 C. No to Palindromes!
- jar 转 exe 以及exe安装包制作含java环境
- [系统编程] epoll的一点总结
- 修改默认jdk版本
- dede标签详细的dede标签大全,dede标签在线学习
- Ubuntu /etc/sudoers 权限被误改为777后导致sudo命令不能使用
- 【CODEFORCES】 C. No to Palindromes!
- A/B 控制台输入语句-异常
- iOS之CALayer的使用
- svg的简单操作(放大缩小,控制)
- Java web----BaseServlet
- protobuf 的使用
- 单例类的强化
- 集合框架之Map接口
- 文件大小与占用空间大小(附带字节转KB,MB公式)