1 条题解

  • 0
    @ 2025-8-24 23:03:16

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar yummy
    这个人是时代的眼泪,什么也没有留下

    搬运于2025-08-24 23:03:16,当前版本为作者最后更新于2024-08-25 18:56:44,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    A. Seats 官方题解

    本题考察的主要知识点:

    • 【2】string 类与相关函数
    • 【2】分支语句、循环语句

    做法(普通)

    首先判断座位够不够坐。如果 a+b>na+b>n,那么座位一定不够坐,否则一定够坐。

    然后用一重 for 循环统计一下老师和学生的座位分别有几个。

    • 假设学生座位有 csc_s 个,不够坐,那么学生需要更改 csac_s-a 个座位。
    • 假设教师座位有 ctc_t 个,不够坐,教师就会要求更改 ctac_t-a 个座位。
    • 如果老师和学生都够坐,就输出 00

    接下来判断一下老师和学生是否分别够坐。显然不可能学生和老师都不够坐(因为刚才 1-1 已经判掉了),按照对应情况输出即可。

    #include<bits/stdc++.h>
    using namespace std;
    int a,b;
    string s;
    int main(){
    	cin>>a>>b>>s;
    	if(a+b>s.size())
    		cout<<-1;
    	else{
    		int cs=0,ct=0;
    		for(int i=0;i<s.size();i++)
    			if(s[i]=='S')cs++;
    			else ct++;
    		int ans=0;
    		ans=max(ans,a-cs);
    		ans=max(ans,b-ct);
    		cout<<ans;
    	}
    	return 0;
    }
    

    做法(快速)

    使用 STL 中的 count 函数可以辅助统计字符串当中 ST 的数量。

    注意到 csa,ctac_s-a,c_t-a 中如果有正数则输出这个正数,否则输出 00,相当于输出 csa,cta,0c_s-a,c_t-a,0 的最大值,可以使用 max 函数计算。

    #include<bits/stdc++.h>
    using namespace std;
    int a,b;
    string s;
    int main(){
    	cin>>a>>b>>s;
    	int cS=count(s.begin(),s.end(),'S'),cT=s.size()-cS;
    	if(a+b>s.size())
    		cout<<-1<<endl;
    	else
    		cout<<max({a-cS,b-cT,0});
    	return 0;
    }
    
    • 1

    信息

    ID
    10581
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者