1 条题解
-
0
其实还好。
题意
个凳子 个团队,每个团队 人,满足 。
团队按顺序落座,问能否在任何情况下每个团队的人都能坐在一起?
思路
构造出最糟糕的情况。
显然, 的团队是无论如何都不会被卡的,那么就考虑怎么卡 的团队。
那么就可以让每个团队坐的位置之间隔 格,这样就可以卡 的团队了。
如果即使这样卡,也能使所有 的团队坐下来,那么就输出
yes,反之no。代码
#include<bits/stdc++.h> using namespace std; const int MAXN = 2e5 + 5; int a[MAXN]; int n,m,now; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; //没啥好说的输入 for (int i = 1; i <= n; i++) { if (now + a[i] <= m) { //前面有坐人的(或是故意空开的)座位数 now += a[i]; now++; //空开一格 } else if (a[i] != 1){ //两个人的组坐不下了 cout << "No" << endl; return 0; } } cout << "Yes"; return 0; }
- 1
信息
- ID
- 244
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 9
- 标签
- 递交数
- 12
- 已通过
- 5
- 上传者