[Luogu] P9756 题解

P9756 题解

思路:因为一张桌子需要 \(4\) 把椅子,所以第 \(i\) 种颜色的椅子一共会摆出 \(\left\lfloor\dfrac{a_i}{4}\right\rfloor\) 把。但注意到:

  • 每张桌子的椅子颜色需要相同
  • 每种颜色的椅子至少有一张桌子用到了

\(a_i < 4\) 时,无法安排椅子,输出 NE

而且根据上述两点可以推出,当 \(n < m\) 时,也同样无法安排椅子,这种情况也输出 NE

以及还有一点情况:放不满,这种情况下用一个变量 \(ans = 0\),对于不同的 \(i\)\(ans\leftarrow ans + a_i\),如果加完了之后 \(ans < n\),则意味着放不满,输出 NE

如果上述情况都不满足,输出 DA 就行了。

#include <bits/stdc++.h>

using namespace std; 

typedef long long ll;

const ll N = 1145141;

ll n, m, a[N], ans = 0;

int main(){
	
	cin >> n >> m;
	if (n < m) {
		puts("NE");
		return 0;
	}
	for (ll i = 1; i <= m; ++i) {
		cin >> a[i];
		if (a[i] < 4) {
			puts("NE");
			return 0;
		}
		ans += a[i] / 4;
	}
	if (ans < n) {
		puts("NE");
		return 0;
	}
	puts("DA");
	
	return 0;
}
posted @ 2023-11-17 20:50  FurippuWRY  阅读(18)  评论(0)    收藏  举报