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

Posted liyexin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
        }    
    }
}

 

以上是关于Codeforces Round #659 (Div. 2) A.Common Prefixes的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #659 (Div. 2)

Codeforces Round #659 (Div. 1) 题解 (AB)

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

Codeforces Round #659 (Div. 2) D GameGame

Codeforces Round #659 (Div. 2) B1. Koa and the Beach (Easy Version)

Codeforces Round #436 E. Fire(背包dp+输出路径)