codeforces790A

来源:互联网 发布:php soapheader 编辑:程序博客网 时间:2024/06/07 15:46

题面在这里

题目大意:

就是说有一个长度为n的名字序列,然后告诉你每连续m个里有没有重复的,有重复的就是NO,没有重复就是YES。让你构造一个合法的名字序列。


一个简单的贪心思想,前m-1个赋值为1~m-1,每次有重复的就让他等于这m个的第一个,这样就不会对后面有影响。如果没有重复的就再新建一个。


/*************************************************************Problem: codeforces 790A - Bear and Different NamesUser: fengyuanLanguage: C++Result: AcceptedTime: 15 msMemory: 0 KBSubmit_Time: 2017-11-17 20:40:50*************************************************************/#include<cstdio>#include<cstring>using namespace std;const int N = 55;char s[5];int ans[N], cnt = 0, n, m;int main(){scanf("%d%d", &n, &m);for (int i = 1; i < m; i ++){ans[i] = i;cnt ++;}for (int i = 1; i <= n-m+1; i ++){scanf("%s", s);if (s[0] == 'N'){ans[i+m-1] = ans[i];} else {ans[i+m-1] = ++ cnt;}}for (int i = 1; i <= n; i ++){if (ans[i] <= 26){putchar(ans[i]+'A'-1);putchar(' ');} else {putchar(ans[i]+'A'-27);putchar(ans[i]+'a'-27);putchar(' ');}}return 0;}


原创粉丝点击