社区讨论
60pts 求调,已知bug,悬2关
P14954520参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mjy6n4ha
- 此快照首次捕获于
- 2026/01/03 18:51 2 个月前
- 此快照最后确认于
- 2026/01/03 18:59 2 个月前
代码:
CPPusing namespace std;
#define int long long
int T;
int n,a,b,c;
string s;
signed main(){
cin>>T;
while(T--){
cin>>n>>a>>b>>c>>s;
s=" "+s;
int ans=0;
while(1){
int k=s.find("520");
if(k==-1)break;
else s[k]='1',s[k+1]='1',s[k+2]='1',ans++;
}
while(a!=0){
int k=s.find("20");
if(k==-1)break;
else s[k]='1',s[k+1]='1',ans++,a--;
}
while(b!=0){
int k=s.find("50");
if(k==-1)break;
else s[k]='1',s[k+1]='1',ans++,b--;
}
while(c!=0){
int k=s.find("52");
if(k==-1)break;
else s[k]='1',s[k+1]='1',ans++,c--;
}
while(a!=0&&b!=0){
int k=s.find("0");
if(k==-1)break;
else s[k]='1',ans++,a--,b--;
}
while(a!=0&&c!=0){
int k=s.find("2");
if(k==-1)break;
else s[k]='1',ans++,a--,c--;
}
while(c!=0&&b!=0){
int k=s.find("5");
if(k==-1)break;
else s[k]='1',ans++,c--,b--;
}
ans+=min({a,b,c});
cout<<ans<<"\n";
}
return 0;
}
问题:比如说一个 52 子串,可以将其拆开成为 5 和 2 使用。
回复
共 2 条回复,欢迎继续交流。
正在加载回复...