D. Colored Balls
题解
1.假设有k类球,当这k类球中数量最多的那一类的数量为m,若m不超过总数的一半,那么答案就是总数的一半+总数的奇偶性,否则答案是m
2.由于数据很小,所以可以
3.我们可以对所有的球类组合用数量最多的那一类球定义
code
// LUOGU_RID: 163214985
#include<bits/stdc++.h>
#define ll long long
const ll mod = 998244353;
using namespace std;
ll a[5005];
ll cnt[5005] = {0};
int main() {
ll n;
cin >> n;
for (ll i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + 1 + n);
ll ans = 0;
cnt[0] = 1;
for (ll i = 1; i <= n; i++) {
for (ll j = 5000 - a[i]; j >= 0; j--) {
if (cnt[j]) {
cnt[j + a[i]] = (cnt[j + a[i]] + cnt[j]) % mod;
if (a[i] >= j) {
ans = (ans + a[i] * cnt[j]) % mod;
} else {
ans = (ans + ((a[i] + j + 1LL) / 2LL) * cnt[j]) % mod;
}
}
}
}
cout << ans << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步