日期:2023.10.3
学号:s07661
一.比赛概况:
总分400分,拿到80分,其中第1题30分,2题50分,3题0分,4题0分,
二. 比赛过程
第一题和第二题暴力,第三题想的部分分没得到,第四题直接不会
三. 解题报告
一.复读机
1.题目大意
现在给定一个长度为 n 的仅包含小写字母和数字的字符串,字母表示需要复读的消息,数字表示要复读的次数。例如:3kdy3,表示将kdy复读3遍,输出:kdykdykdy;然而复读没有这么简单,小可想进行一个更复杂的复读模拟, 于是这个字符串中可能包含多个数字, 当多次出现数字时,例如 52a5b2,我们从左到右解析这个字符串,5a5 表示将 a 复读 5 遍,即原字符串变 为 aaaaab ,然后遇到数字 2 ,再将所有消息全部复读 2 遍,即 aaaaabaaaaab 。
2.比赛中的思考
单纯暴力,就是卡住了
3.解题思路
就是枚举
4 .AC代码
#include<bits/stdc++.h>
using namespace std;
int t,n;
string s;
bool kun(char x){
if(x>='0'&&x<='9')return 1;
return 0;
}
int main(){
// freopen("repeater.in","r",stdin);
// freopen("repeater.out","w",stdout);
cin>>t;
while(t--){
cin>>n;
cin>>s;
int a[500005],cnt=0,cnt1=0;
string ss,ans="";
for(int i=0;i<n;i++){
if(!kun(s[i])){
ss+=s[i];
}
else{
int t=cnt1,sum=0;
while(kun(s[i])){
sum=sum*10+s[i]-'0';
i++;
}
i--;
ans+=ss;
string sss=ans;
for(int i=1;i<=sum-1;i++){
ans+=sss;
}
ss="";
}
}
cout<<ans;
cout<<"\n";
}
// fclose(stdin);
// fclose(stdout);
return 0;
}
二.小可的矛与盾
1.题目大意
有n个小可战士站成一排,他们的编号从1到n,每个小可都有一个战斗力xi=i