【CUGBACM15级BC第37场 A】hdu 5202 Rikka with string
2017-09-14 21:23
477 查看
Rikka with string
[align=center]Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1577 Accepted Submission(s): 587
[/align]
[align=left]Problem Description[/align]
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them:
One day, Yuta got a string which contains n letters but Rikka lost it in accident. Now they want to recover the string. Yuta remembers that the string only contains lowercase letters and it is not a palindrome string. Unfortunately he cannot remember
some letters. Can you help him recover the string?
It is too difficult for Rikka. Can you help her?
[align=left]Input[/align]
This problem has multi test cases (no more than20
). For each test case, The first line contains a number
n
(1≤n≤1000).
The next line contains an n-length string which only contains lowercase letters and ‘?’ – the place which Yuta is not sure.
[align=left]Output[/align]
For each test cases print a n-length string – the string you come up with. In the case where more than one string exists, print the lexicographically first one. In the case where no such string exists,
output “QwQ”.
[align=left]Sample Input[/align]
5
a?bb?
3
aaa
[align=left]Sample Output[/align]
aabba
QwQ
题目大意:给出一个字符串,字符串中有n个问号,要求你用小写字母填充哪些问号,使得填充完后,字符串的字典序最小且不形成回文,如果无论怎么填充都是回文的话,就输出QwQ
题目大意:处理的话,先将所有问号用填充,然后再考虑是否回文,如果是回文的话,优先修改的应该是最后一个填充位置的字符,如果还是回文的话,就只需修改倒数第二个填充位置的字符,最后一个不变。因为问号大于等于2的话,那么这个字符串必定不会回文了,这里几个陷阱样例
1 ?,输出应该是QwQ
5 aa?aa,输出应该是QwQ
5 a??aa,输出abaaa
注意一下特殊情况,即最后一个问号在中间的情况
#include<cstdio> #include<cstring> #define maxn 1010 int n; char str1[maxn], str2[maxn]; int mark[maxn]; bool check(char *s) { for (int i = 0; i < n / 2; i++) if (s[i] != s[n - 1 - i]) { return false; } return true; } int main() { while (scanf("%d", &n) == 1) { scanf("%s", str1); int cnt = 0; for (int i = 0; i < n; i++) { str2[i] = str1[i]; if (str1[i] == '?') { str2[i] = 'a'; mark[cnt++] = i; } } str2 = '\0'; if (n == 1 && str1[0] == '?') { printf("QwQ\n"); continue; } if (cnt == 0 && check(str1)) { printf("QwQ\n") ; continue; } if (!check(str2)) { printf("%s\n", str2); continue; } str2[mark[cnt - 1]] = 'b'; if (!check(str2)) { printf("%s\n", str2); continue; } if (cnt == 1) { printf("QwQ\n"); continue; } str2[mark[cnt - 2]] = 'b'; str2[mark[cnt - 1]] = 'a'; printf("%s\n", str2); } return 0; }
相关文章推荐
- HDU - 5202 Rikka with string 贪心
- HDU 5202 Rikka with string
- HDU 5202 Rikka with string
- hdu 5202 Rikka with string
- hdu 5202 Rikka with string
- hdu5202 Rikka with string
- hdu 5202 Rikka with string(模拟)
- HDU 5202 Rikka with string (水DFS)
- HDU 5202 Rikka with string
- hdu 5202 Rikka with string
- hdu 5202 Rikka with string
- hdu 5202 Rikka with string
- HDU-5202-Rikka with string(DFS + WrongAnswer)
- 【CUGBACM15级BC第27场 A】hdu 5162 Jump and Jump...
- 【CUGBACM15级BC第五场 A】hdu 4956 Poor Hanamichi
- 【CUGBACM15级BC第15场 B】hdu 5082 Instruction
- 【CUGBACM15级BC第22场 B】hdu 5143 NPY and arithmetic progression
- HDU 5631 Rikka with Graph(BC)
- 【CUGBACM15级BC第四场 A】hdu 4931 Happy Three Friends
- 【CUGBACM15级BC第9场 B】hdu 4994 Revenge of Nim