A. Common Prefixes(构造思维) Codeforces Round #659 (Div. 2)
原题链接: https://codeforces.com/contest/1384/problem/A
测试样例
input
4
4
1 2 4 2
2
5 3
3
1 3 1
3
0 0 0
output
aeren
ari
arousal
around
ari
monogon
monogamy
monthly
kevinvu
kuroni
kurioni
korone
anton
loves
adhoc
problems
Note
Note
In the 1-st test case one of the possible answers is s=[aeren,ari,arousal,around,ari].
Lengths of longest common prefixes are:
Between aeren and ari →1
Between ari and arousal →2
Between arousal and around →4
Between around and ari →2
题意: 现在给定一个长度为 n n n的字符串前缀长度数组 a a a, a [ i ] a[i] a[i]表示着第 i i i个字符串与第 i + 1 i+1 i+1个字符串的前缀长度,问你能否构造出这 n + 1 n+1 n+1个字符串使得满足这些条件?(题目保证一定有解。)
解题思路: 我们这样想,每一个字符串都与前面的有关除了第一个字符串,那么我们是不是可以去构造第一个字符串?因为只有它是未知的,至少它前面没有字符串,如果我们已知第一个字符串,我们根据 a [ i ] a[i] a[i]只要修改前面那个字符串上第 a [ i ] + 1 a[i]+1 a[i]+1个字符串的值。 那么我们怎么构造则是解决这个题目的关键。我们要这样想:由于所有的元素都是字符,我们会想到用最简单的来表示,即用 a a a和 b b b这两个字母来表示差异,那么我们表示第一个字符串全表示为 ′ a ′ 'a' ′a′。之后的字符串皆可以根据前面字符串进行更改输出即可。OK,具体看代码。
AC代码
/*
*邮箱:unique_powerhouse@qq.com
*blog:https://me.csdn.net/hzf0701
*注:文章若有任何问题请私信我或评论区留言,谢谢支持。
*
*/
#include<bits/stdc++.h> //POJ不支持
#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增
#define per(i,a,n) for (int i=a;i>=n;i--)//i为循环变量, a为初始值,n为界限值,递减。
#define pb push_back
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define fi first
#define se second
#define mp make_pair
using namespace std;
const int inf = 0x3f3f3f3f;//无穷大
const int maxn = 1e5;//最大值。
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
//*******************************分割线,以上为自定义代码模板***************************************//
int t,n;
int a[maxn];
char s[maxn];
int main(){
//freopen("in.txt", "r", stdin);//提交的时候要注释掉
IOS;
while(cin>>t){
while(t--){
int maxx=0;
cin>>n;
rep(i,1,n){
cin>>a[i];
maxx=max(a[i],maxx);//找到最大的,构建这样的数组。
}
//接下来按顺序输出即可。
rep(i,0,maxx){
s[i]='a';
}
s[maxx+1]='\0';
cout<<s<<endl;
rep(i,1,n){
//即我们要对上个字符串所在位置进行更改。
if(s[a[i]]=='a')
s[a[i]]='b';
else
s[a[i]]='a';
cout<<s<<endl;
}
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)