1. 程式人生 > 實用技巧 >Codeforces Round #659 (Div. 2) A.Common Prefixes

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; } } }