P10994题解
jixiyue114514 · · 题解
题目大意
有一个讲座,一共有 S 就代表这个座位是给学生坐的;反之,如果 T 则代表这个座位是给老师做的,但是老师或学生的座位可能不够坐,所以让你进行以下两个操作之一:
- 将这个座位的类型改成学生。(原来是老师)
- 将这个座位的类型改成老师。(原来是学生)
问最少要经过多少次操作才能使老师和学生都够坐。特别的,如果无论怎么修改,都无法让所有人有座位,则输出
题解思路
统计学生总座位数和老师总座位数,对比有多少学生和老师,如果学生或老师不够坐,则直接拿学生或老师的总人数减去总座位数,就是要操作的次数,如果全部座位小于人数,输出
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int te=0,st=0,a,b;//te表示老师座位数,st表示学生座位数
cin>>a>>b;
cin>>s;
for(int i=0;i<s.length();i++){
if(s[i]=='S'){
st++;
}else if(s[i]=='T'){
te++;
}
}
if(st+te<a+b){
cout<<-1;
}else if(st>=a&&te>=b){
cout<<0;//全部够坐输出0
}else if(st<a){
cout<<a-st;
}else{
cout<<b-te;
}
}