Codeforces Round #659 (Div. 2) A.Common Prefixes

地址:http://codeforces.com/contest/1384/problem/A

题意:

输出n+1个字符串,si和si+1的公共前缀长为ai

解析:

一个一个补的话,会很麻烦。

看范围:ai<=50,就是说前缀最长为50,那么考虑把所有字符串长度都构造为长度>50,那么对于每一个ai,只需要修改s[a[i]]就可以了。

26个字符,两次就是52,够用,以此做为s1

#include<iostream>
#include<cstring>
#include<string.h>
#include<cmath>
#include<map>
using namespace std;
typedef long long ll;
const int maxn=1e2+10;
const int maxn2=3e6;
const int mod=1e9+7;
char s1[maxn],s2[maxn];
int a[maxn];
int b[2*maxn2];
int qk(ll a, ll b,ll c)
{
    ll ans=1;
    a=a%c;
    while(b)
    {
        if(b%2==1)
            ans=(ans*a)%c;
        b=b/2;
        a=(a*a)%c;
    }
    return  ans;
}
int main()
{
      int t;
      cin>>t;
      while(t--)
      {
          int n;
          cin>>n;
          for(int i=1;i<=n;i++)
              cin>>a[i];
          string s;
        char ch='a';
        for(int i=1;i<=26;i++)
        {
            s+=ch;
            ch++;    
        }          
        cout<<s<<s<<endl;
        string md=s+s;
        for(int i=1;i<=n;i++)
        {
            char c=md[a[i]];
            
            if(c=='z')
                c='a';
            else
                c++;
            md[a[i]]=c;
            cout<<md<<endl;
        }    
    }
}

猜你喜欢

转载自www.cnblogs.com/liyexin/p/13376107.html
今日推荐