题目简述
共有 \(T\) 组数据,对于每组数据:
有三个桶,五种垃圾,每个桶有固定的容量。
前三种垃圾分别放入三种桶中,第四种垃圾可以放进 \(1,3\) 桶中,第五种垃圾可以放进 \(2,3\) 桶中。
问题:对于给定的桶容量和垃圾量,请问垃圾是否可以全部放入桶中?
思路
简单贪心题。
贪心思路很简单,首先装 \(1,2,3\) 种垃圾,如果此时都装不下直接输出 NO
,因为这三种垃圾只能装入 \(1,2,3\) 号桶。
那么接下来就是处理剩下两种垃圾,发现这两种垃圾都可装入 \(3\) 号桶,所以需要优先装 \(1,2\) 号桶,装不下之后再装 \(3\) 号,如果此时装不下,则输出 NO
,否则输出 YES
。
下面是代码实现:
#include<iostream>
using namespace std;
int T, a, b, c, d, e, x, y, z; // 垃圾及桶
int main(){
cin >> T; // 多组数据!
while(T --) {
cin >> x >> y >> z;
cin >> a >> b >> c >> d >> e; // 分别输入垃圾数及桶数
if(x < a || y < b || z < c) {
cout << "NO\n"; // 1 2 3 装不下,输出 NO
continue;
}
x -= a, y -= b, z -= c; // 能装下就装
d -= x, e -= y; // 剩下两种垃圾,分别优先装入 1 2 号桶
d = max(0, d), e = max(0, e); // 去除负数情况!!
if(z >= d + e) cout << "YES\n"; // 剩下垃圾能装下
else cout << "NO\n"; // 装不下
}
return 0;
}
\[\text{The End!}
\]
标签:cout,NO,题解,CF1468N,cin,装不下,垃圾
From: https://www.cnblogs.com/So-noSlack/p/17601078.html