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;
}
posted @ 2021-12-23 20:21  Eason_AC  阅读(47)  评论(0)    收藏  举报