UVA12996 Ultimate Mango Challenge 题解
Content
有 \(T\) 次比赛,每次比赛有 \(n\) 个盘子,第 \(i\) 个盘子上面有 \(a_i\) 个芒果,并规定每个盘子里最多吃 \(b_i\) 个芒果,一共最多能吃 \(l\) 个芒果,询问是否能够吃完盘子里所有的芒果,获得比赛的胜利。
数据范围:\(T<10,0<n<10,0\leqslant l\leqslant 20,a_i,b_i<10\)。
Solution
既然数据范围是这么的小,那么我们考虑一下用最纯粹的模拟吧。
很容易可以分析出,在这题目中,吃完芒果的前提条件是:
\[\begin{cases}a_i\leqslant b_i\\\sum\limits_{i=1}^na_i\leqslant l\end{cases}
\]
所以我们可以先把这个题目中的 \(\sum\limits_{i=1}^na_i\) 求出来,再在输入 \(b_i\) 的时候逐个比较 \(a_i\),最后判断出结果即可。
Code
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
int t, n, l, a[107], x, cntcase;
int main() {
scanf("%d", &t);
while(t--) {
printf("Case %d: ", ++cntcase);
int sum = 0, ans = 0, flag = 1;
scanf("%d%d", &n, &l);
for(int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
sum += a[i];
}
for(int i = 1; i <= n; ++i) {
scanf("%d", &x);
if(x < a[i]) {
flag = 0;
break;
}
}
if(sum > l || !flag) puts("No");
else puts("Yes");
}
return 0;
}