1 条题解

  • 0
    @ 2025-8-24 22:35:46

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar lemon_qwq
    **

    搬运于2025-08-24 22:35:46,当前版本为作者最后更新于2022-01-28 18:17:16,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    学霸题,数杯架

    更好の阅读体验

    sol\mathbf{sol}

    这道题我们可以把普通座位和爱心座位的总数统计起来,然后判断是否有位置就可以了。大家听到这个方法可能会疑惑爱心座位什么判断,但爱心座位一定是双数,所以把统计的爱心座位除以二再加一就可以算出空隙了,普通座位不用进行任何判断,空隙就是原数。

    如果您没有听懂,让我举个例子。

    假设座位是 $\mathbf{\color{green}{SS}\color{red}{LLLL}\color{green}{SS}}$,这里我给大家说一个大家常犯的误区,中间的四个 L\mathbf{\color{red}L} 不代表他们四个人中间都没有杯架,而是他们之间两两划分,我用星号代表杯架,那中间部分就是 $\mathbf{\color{black}{*}\color{red}{LL}\color{black}{*}\color{red}{LL}\color{black}{*}}$,所以我们可以推导出爱心座位的杯架数量为 love/2+1,我们得到爱心座位的杯架数量为 33,普通座位的数量为 44,所以总数为 77,我们用图表示一下,就是 $\mathbf{\color{black}{*}\color{green}{S}\color{black}{*}\color{green}{S}\color{black}{*}\color{red}{LL}\color{black}{*}\color{red}{LL}\color{black}{*}\color{green}{S}\color{black}{*}\color{green}{S}\color{black}{*}}$。

    ac code\mathbf{ac\ code}

    #include<bits/stdc++.h>
    using namespace std;
    int n,ss,ll;//ss为普通座位的数量,ll为爱心座位的数量。
    char s;
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>s;
    		if(s=='S')ss++;//查询普通座位的数量。
    		else ll++;//查询爱心座位的数量。
    	}
    	cout<<min(ss+(ll/2+1),n);//解释一下为什么要判断最小,因为在样例 1 的情况下杯架比人多,而我们要判断多少人能使用杯座。
    	return 0;//华丽的结尾
    }
    
    • 1

    信息

    ID
    6783
    时间
    1000ms
    内存
    32MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者