1 条题解
-
0
自动搬运
来自洛谷,原作者为

lemon_qwq
**搬运于
2025-08-24 22:35:46,当前版本为作者最后更新于2022-01-28 18:17:16,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
学霸题,数杯架。。
这道题我们可以把普通座位和爱心座位的总数统计起来,然后判断是否有位置就可以了。大家听到这个方法可能会疑惑爱心座位什么判断,但爱心座位一定是双数,所以把统计的爱心座位除以二再加一就可以算出空隙了,普通座位不用进行任何判断,空隙就是原数。
如果您没有听懂,让我举个例子。
假设座位是 $\mathbf{\color{green}{SS}\color{red}{LLLL}\color{green}{SS}}$,这里我给大家说一个大家常犯的误区,中间的四个 不代表他们四个人中间都没有杯架,而是他们之间两两划分,我用星号代表杯架,那中间部分就是 $\mathbf{\color{black}{*}\color{red}{LL}\color{black}{*}\color{red}{LL}\color{black}{*}}$,所以我们可以推导出爱心座位的杯架数量为
love/2+1,我们得到爱心座位的杯架数量为 ,普通座位的数量为 ,所以总数为 ,我们用图表示一下,就是 $\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}{*}}$。。
#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
- 上传者