Promblem A 小G的字符串

  给定$n,k$,构造一个长度为$n$,只能使用$k$种小写字母的字符串。

  要求相邻字符不能相同且$k$种字母都要出现

  输出字典序最小的字符串,无解输出$-1$。

  对于$100\%$的数据满足$\leq n \leq 10^5$

  Solution : 

    我们考虑构造,显然是形如$a,b,a,b,...,c,d...$的字符串。

    即从$[1,n-k+2]$交替填$a,b$,然后$[n-k+3,n]$依次填$c,d,e ... $

    这样构造的时间复杂度是$O(n)$

# pragma GCC optimize(3) 
# include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
char ans[N];
int n,k;
int main() {
  freopen("str.in","r",stdin);
  freopen("str.out","w",stdout);
    scanf("%d%d",&n,&k);
    if (k == 1 && n == 1) {
        puts("a"); return 0;
    }
    if (k > n || k ==1) {
        puts("-1"); return 0;
    }
    char now='c';
    for (int i=n-k+3;i<=n;i++) ans[i]=now++;
    int op = 0; 
    for (int i=1;i<n-k+3;i++,op=1-op) ans[i]='a'+op;
    for (int i=1;i<=n;i++) putchar(ans[i]);
    puts(""); 
    return 0;
}
str.cpp

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案