NOIP 模拟题 奇怪的字符串
2017-10-24 14:01
253 查看
题目描述
有一天,小 A 的女票为了让小 A 证明他对她的忠诚,要求小 A 生成一个长度
为 n 的、全由小写英文字母构成的字符串,只能使用 k 种字母。要求满足:
• 字符串中相邻的两个字母不能相同。
• 必须出现恰好 k 种不同的字母。
这样的合法字符串可能有很多,小 A 的女票要求小 A 输出字典序最小的那个。
小 A 太笨了,但是小 A 又不希望丢掉女票,希望你帮帮他。
输入格式
输入文件只有两个数字 n,k,含义如题。
输出格式
输出文件共一行,输出合法的字典序最小的字符串。
如果不存在任意一个合法的方案,输出 −1。
样例输入
7 4
样例输出
ababacd
数据范围
对于 100% 的数据,1 ≤ n ≤ 10 5 ,1 ≤ k ≤ 26
这就是一道模拟题啊。
先判断不合法的:n< k的以及k=1且n>1的;
然后先全部搞成ababababab……然后再倒着把后面的赋成其他没有用过的字符就可以了。
有一天,小 A 的女票为了让小 A 证明他对她的忠诚,要求小 A 生成一个长度
为 n 的、全由小写英文字母构成的字符串,只能使用 k 种字母。要求满足:
• 字符串中相邻的两个字母不能相同。
• 必须出现恰好 k 种不同的字母。
这样的合法字符串可能有很多,小 A 的女票要求小 A 输出字典序最小的那个。
小 A 太笨了,但是小 A 又不希望丢掉女票,希望你帮帮他。
输入格式
输入文件只有两个数字 n,k,含义如题。
输出格式
输出文件共一行,输出合法的字典序最小的字符串。
如果不存在任意一个合法的方案,输出 −1。
样例输入
7 4
样例输出
ababacd
数据范围
对于 100% 的数据,1 ≤ n ≤ 10 5 ,1 ≤ k ≤ 26
这就是一道模拟题啊。
先判断不合法的:n< k的以及k=1且n>1的;
然后先全部搞成ababababab……然后再倒着把后面的赋成其他没有用过的字符就可以了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,k; char s[100009],a[2]; int main() { scanf("%d%d",&n,&k); if((k==1&&n>1)||(k>n)) { printf("-1\n"); return 0; } a[0]='a';a[1]='b'; for(int i=1;i<=n;i++) { s[i]=a[(i%2)^1]; } for(int i=0;i<k-2;i++) { s[n-i]='a'+k-1-i; } puts(s+1); return 0; }
相关文章推荐
- NOIP模拟题 2016.11.11 [搜索] [动态规划] [网络流] [字符串处理]
- 【字符串处理】【模拟】【120718测试】【NOIP模拟题】NBA工资
- NOIP模拟题 2016.11.15 [LIS] [spfa] [同余最短路] [矩阵快速幂] [容斥原理] [数学]
- 【NOIP 模拟题】[T1]return(模拟)
- noip模拟题11.18信心题 noip2016就在明天
- 湖南NOIP集训模拟题DAY1 BY ExfJOE [贪心][DP][二分]
- [Noip模拟题]山峰
- NOIP 模拟题 秘密信息
- 【NOIP 模拟题】刺杀大使(二分答案+并查集)
- NOIP模拟题[双向链表][延时更新][回收空间]EDITOR
- 【NOIP模拟题】“与”(位运算)
- noip1996 字符串编辑 - 普及组 (模拟,字符串处理)
- NOIP模拟题[dfs][DP]
- [NOIP模拟题][杂题][贪心][水题]
- [NOIP模拟题][树状数组][线段树]
- [NOIP模拟题][DP][水题][数学][树链剖分][差分序列]
- NOIP模拟题 [DP][二分][树剖][树上差分]
- 【noip2005提高组T4】 等价表达式 字符串处理+栈
- 【NOIP模拟题】【暴力求解法】【JOI】2016.11.14第二题 愉快的logo设计 题解
- 【NOIP模拟题】【模拟】【DP】【JOI】2016.11.14第一题 复制&粘贴2 题解