CF1913B Swap and Delete 题解
思路。
这是一道挺简单的贪心,由于题目中说交换操作免费,所以我们尽量使用交换,不能交换了再用删除。
求要用的钱也很简单,我们用两个变量分别储存字符串中 和 的个数,然后开始交换,从字符串开头枚举到字符串结尾,如果遇到 ,就将 的数量减 ,反之亦然。
要在每次减之前判断一下数量是否为空,为空就跳出,防止变成负数。
最后要删除的数量就是 剩下的数量加 剩下的数量。
AC代码。
#include<bits/stdc++.h>
using namespace std;
int t,z,o,c;
string s;
int main(){
cin>>t;
while(t--){
c=z=o=0;
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]=='0'){
z++;
}
else o++;
}
for(int i=0;i<s.size();i++){
if(s[i]=='0'){
if(o>0)
o--;
else break;
}
else{
if(z>0){
z--;
}
else break;
}
}
cout<<o+z<<endl;
}
return 0;
}

浙公网安备 33010602011771号