标签:长度 输出 common turn ret div n+1 using ace
地址: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
标签:长度 输出 common turn ret div n+1 using ace
原文地址:https://www.cnblogs.com/liyexin/p/13376107.html