社区讨论
各位大佬,求调
P14954520参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mk6qrz2a
- 此快照首次捕获于
- 2026/01/09 18:37 上个月
- 此快照最后确认于
- 2026/01/11 17:50 上个月
CPP
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define kuaitou ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define baoliu(n) fixed<<setprecision(n)
#define FN(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout);
int f1(int a,int b,int c,string s){
int sum=0;
for(int i=0;i<s.size();i++){
if(s[i]=='5'){
sum++;
}
}
return min({b,c,sum+a});
}
int f2(int a,int b,int c,string s){
int sum=0;
for(int i=0;i<s.size();i++){
if(s[i]=='2'){
sum++;
}
}
return min({a,c,sum+b});
}
int f3(int a,int b,int c,string s){
int sum=0;
for(int i=0;i<s.size();i++){
if(s[i]=='0'){
sum++;
}
}
return min({a,b,sum+c});
}
int f(int a,int b,int c,string s){
int ans=0;
for(int i=0;i<s.size()-2;i++){
if(s[i]=='5'&&s[i+1]=='2'&&s[i+2]=='0'){//已有的
ans++;
s[i]='9';
s[i+1]='9';
s[i+1]='9';
i+=2;
}
}
for(int i=0;i<s.size()-1;i++){//差一个的
if(s[i]=='2'&&s[i+1]=='0'){
ans++;
a--;
s[i]='9';
s[i+1]='9';
i++;
}else if(s[i]=='5'&&s[i+1]=='0'){
ans++;
b--;
s[i]='9';
s[i+1]='9';
i++;
}else if(s[i]=='5'&&s[i+1]=='2'){
ans++;
c--;
s[i]='9';
s[i+1]='9';
i++;
}
}
int A=0,B=0,C=0;
for(int i=0;i<s.size();i++){
if(s[i]=='5'){
A++;
}else if(s[i]=='2'){
B++;
}else{
C++;
}
}
ans+=max({min({A+a,b,c}),min({a,B+b,c}),min({a,b,C+c})});//剩下的
return ans;
}
int main(){
kuaitou;
int t;
cin>>t;
for(int i=1;i<=t;i++){
int n,a,b,c;
string s;
cin>>n>>a>>b>>s;
cout<<f(a,b,c,s)<<endl;
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...