L1-100 四项全能(测试点1)
目录
题目链接
测试点1
思路&做法
参考代码
题目链接
L1-100 四项全能 - 团体程序设计天梯赛-练习集
【输入】
第一行
- n:总人数
- m:技能的个数
第二行
- 对于某个技能会的人数
【输出】
- 对于所有技能会的人数
测试点1
【输入】
3 2
1 1
【预期输出】
0
思路&做法
因为我们要求的是所有技能都会的人数,有一个技能不会都不行,就按照这个思路来解题。
比如
- 一个班有50人,有两个技能,其中第一个技能会的人数是40人,第二个技能会的人数是30人
- 对于第二个技能,有20个人不会,恰好这20人在会第一个技能的40人中
- 那么对于剩下的40-20=20人,都会两个技能。
- 答案就是20
具体做法:对于会第一个技能的人数,在这个技能的人数中,减去不会其他技能的人数。
特别说明:如果减完最后,是负数,说明会所有技能的人数是0,这一点在测试点1中就有所体会。
参考代码
#include <bits/stdc++.h>
#define debug(x) cout << endl << "===>" << #x << "=" << x << endl;
#define output(x) cout << x << endl
using namespace std;
void solve() {
int n, m;//总共n人,m个技能
cin >> n >> m;
vector<int> v(m);
for(int i = 0; i < m; i++) cin >> v[i];
int t = v[0];//t为所有技能都会的人数
for(int i = 1; i < m; i++) {
t = t - (n - v[i]);
}
//测试点1
t = max(t, 0);//如果t是负数,改为0
output(t);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
solve();
return 0;
}