Codeforces Round #265 (Div. 1) A
来源:互联网 发布:淘宝买家钻石等级 编辑:程序博客网 时间:2024/05/29 19:10
A. No to Palindromes!
题意:一个长度为n的串,可以包含前p个小写字母。串中不包含长度为2及以上的回文串。求字典序比它大的下一个这样的串,如果没有输出NO。
思路:使串的字典序逐渐增加,并测试是否满足要求。刚开始我的解法是每次字典序+1,结果被hack了,这不是重点,重点是hack我的人是
tourist !
后来我意识到是TLE不是WA,就用了一种贪心方法,从头开始扫描,如果发现回文,立即让回文的地方增加。
#include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> #include <iomanip> #include <cstdlib> #include <string> #include <memory.h> #include <vector> #include <queue> #include <stack> #include <map> #include <set> #include <ctype.h> #include <sstream> #define INF 1000000000 #define ll long long #define min3(a,b,c) min(a,min(b,c)) #define max3(a,b,c) max(a,max(b,c)) #define MAXN 100010 using namespace std; char str[1010];int num[1010];int n,p;bool judge(){for(int i=1;i<n-1;i++){if(num[i-1]==num[i+1])return false;}for(int i=0;i<n-1;i++){if(num[i]==num[i+1])return false;}return 1;}bool add(){num[n-1]++;int t=n-1;while(num[t]==p){num[t]=0;t--;if(t<0)return 0;num[t]++;}return 1;}bool add2(){for(int i=0;i<n;i++){if(i+1<n&&num[i]==num[i+1]){num[i+1]++;int t=i+1;while(num[t]==p){num[t]=0;t--;if(t<0)return 0;num[t]++;}for(int j=t+1;j<n;j++){num[j]=0;}}if(i+2<n&&num[i]==num[i+2]){num[i+2]++;int t=i+2;while(num[t]==p){num[t]=0;t--;if(t<0)return 0;num[t]++;}for(int j=t+1;j<n;j++){num[j]=0;}}}return 1;}int main(){while(cin>>n>>p){cin>>str;int len=strlen(str);for(int i=0;i<len;i++){num[i]=str[i]-'a';}while(true){if(!add()){cout<<"NO"<<endl;break;}if(!add2()){cout<<"NO"<<endl;break;}if(judge()){for(int i=0;i<n;i++){str[i]=num[i]+'a';}cout<<str<<endl;break;}}}return 0;}
0 0
- Codeforces Round #265 (Div. 1) A
- Codeforces Round #265 (Div. 1) A No to Palindromes!
- Codeforces Round #202 (Div. 1) A. Mafia
- Codeforces Round #212 (Div. 1) <A>
- Codeforces Round #215 (Div. 1) <A-B>
- Codeforces Round #232 (Div. 1) <A>
- Codeforces Round #233 (Div. 1) <A>
- Codeforces Round #239 (Div. 1)(A,B)
- Codeforces Round #253 (Div. 1)-A,B
- Codeforces Round #254 (Div. 1)-A,B
- Codeforces Round #260 (Div. 1) A. Boredom
- Codeforces Round #268 (Div. 1) A
- Codeforces Round #276 (Div. 1) A. Bits
- Codeforces Round #276 (Div. 1) A. Bits
- Codeforces Round #278 (Div. 1) A
- Codeforces Round #282 (Div. 1) A
- Codeforces Round #284 (Div. 1) A
- Codeforces Round #282 (Div. 1) A. Treasure
- 数据结构---单链表
- C++面试题6:sizeof 使用规则及陷阱
- 二叉树的重建(递归实现)
- 可以学习的计算机书籍
- json的简单介绍
- Codeforces Round #265 (Div. 1) A
- 嵌入式C51编程规范
- 【ACdream】1070 神奇的%系列二
- 黑马程序员——java小结_002_String类
- Mark-and-Sweep Garbage Collection
- zoj 3818 Pretty Poem (模拟)
- Navicat for mysql 远程连接 mySql数据库10061错误问题
- Java编程思想(九) —— 持有对象(下)
- 8.7-硬币组合