博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #265 (Div. 2) C 暴力+ 找规律+ 贪心
阅读量:6698 次
发布时间:2019-06-25

本文共 2591 字,大约阅读时间需要 8 分钟。

C. No to Palindromes!
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Paul hates palindromes. He assumes that string s is tolerable if each its character is one of the first p letters of the English alphabet and s doesn't contain any palindrome contiguous substring of length 2 or more.

Paul has found a tolerable string s of length n. Help him find the lexicographically next tolerable string of the same length or else state that such string does not exist.

Input

The first line contains two space-separated integers: n and p (1 ≤ n ≤ 1000; 1 ≤ p ≤ 26). The second line contains string s, consisting of n small English letters. It is guaranteed that the string is tolerable (according to the above definition).

Output

If the lexicographically next tolerable string of the same length exists, print it. Otherwise, print "NO" (without the quotes).

Sample test(s)
Input
3 3 cba
Output
NO
Input
3 4 cba
Output
cbd
Input
4 4 abcd
Output
abda
Note

String s is lexicographically larger (or simply larger) than string t with the same length, if there is number i, such that s1 = t1, ..., si = ti, si + 1 > ti + 1.

The lexicographically next tolerable string is the lexicographically minimum tolerable string which is larger than the given one.

A palindrome is a string that reads the same forward or reversed.

 

 

题解转自:

题意:给你一个没有长度为2以上(包括2)的回文串的一个字符串,然后让你求比他大的所有排列且没有长度为2以上(包括2)的下一个最小的排列。

剩下的1个半小时都在搞这题。。。。。。。。。。T_T

神题。。

我dfs写渣

判重写渣

然后滚粗。

这里有个贪心。

串的任意部分都不能是回文=串中任意连续3个字符互不相同

那么如果从左往右找,那么只需要判断x-1和x-2与x不等即可

其次我们要保证字典序最小,所以我们从右向左依次尝试修改,只要找到不符合回文条件的点,就修改它。这样保证了前边的最小。。

而且能证明,后边一定能构造出一个不是回文的串。例如m=4,我可以构造abcabcabc。。。。。。。。。。。。(x-1和x-2与x不等)

 

程序中有访问 char 数组的负下标,感觉太高大上了,我试了下,负下标的%d输出为0

网上有人说原因是  :记住,下标只是个操作符。 x[n] 等价于 *(x + n)

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 10 #define N 100511 #define M 1512 #define mod 613 #define mod2 10000000014 #define ll long long15 #define maxi(a,b) (a)>(b)? (a) : (b)16 #define mini(a,b) (a)<(b)? (a) : (b)17 18 using namespace std;19 20 int n,p;21 char s[N];22 23 char ok(int t)24 {25 char i;26 for(i=s[t]+1;i-'a'+1<=p;i++){27 if(s[t-1]!=i && s[t-2]!=i) return i;28 }29 return 0;30 }31 32 int solve()33 {34 int i;35 char t;36 // if(p==1) return 0;37 // if(n==1) return38 for(i=n-1;i>=0;i--){39 t=ok(i);40 if( t!=0 ){41 s[i]=t;42 break;43 }44 }45 if(i==-1) return 0;46 47 i++;48 for(;i

 

转载于:https://www.cnblogs.com/njczy2010/p/3967834.html

你可能感兴趣的文章
从蚂蚁金服实践入手,带你深入了解 Service Mesh
查看>>
京东购物在微信等场景下的算法应用实践
查看>>
MongoDB Mobile Sync for iOS推出Beta版本
查看>>
VS Code 0.5添加ES6支持和Git工具改进
查看>>
F# 4.0于全平台发布
查看>>
回顾小程序2018年三足鼎立历程,2019年BAT火力全开
查看>>
Facebook开源ptr:在Python环境中并行运行单元测试
查看>>
避免流量高峰期CDN问题的10个方法
查看>>
分布式系统的开发经验与心得
查看>>
Apple着手抛弃32位macOS应用程序
查看>>
使用postman测试接口
查看>>
创建型模式二:工厂方法模式
查看>>
Linux-MySQL基本命令-SQL语句
查看>>
别的AI还在打游戏,这个AI已经当上“超级马里奥”游戏策划了|GECCO最佳论文
查看>>
StringBuffer与StringBuilder
查看>>
Kinect2.0-空间长度测量
查看>>
hibernate连接数据库配置
查看>>
MySQL的timestamp字段可以使用的范围是多少
查看>>
mysqldump 使用备忘
查看>>
vue新手入门——vue-cli搭建
查看>>