ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#196444 | #2381. 庆祝会 | tkswls | 100 | 9ms | 12220kb | C++11 | 890b | 2023-10-26 10:15:12 | 2023-10-26 12:37:05 |
answer
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m, a[100005], sum[100005], f[1005][1005], ssum[1000006];
const int mod = 998244353;
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++) {
sum[i] = sum[i - 1] + a[i];
}
if (m >= sum[n]) {
cout << 1;
return 0;
}
int ans = 0;
ssum[sum[n]] = 1;
for (int i = n; i >= 1; i--) {
for (int j = 0; j <= m; j++) {
f[i][j] = (ssum[sum[i] - j + m ] + mod) % mod;
}
for (int j = sum[i - 1]; j <= min(m, sum[i] - 1); j++) {
ans += f[i][j];
ans %= mod;
}
if (!(n - i)) {
f[n][m] = 1;
}
for (int j = 0; j <= m; j++) {
ssum[sum[i - 1] - j + m] += f[i][j];
ssum[sum[i - 1] - j + m] %= mod;
}
}
cout << ans;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 1ms
memory: 1448kb
input:
19 800 160 65 115 207 17 48 23 201 105 198 40 64 125 213 164 188 131 136 59
output:
9322
result:
ok 1 number(s): "9322"
Test #2:
score: 10
Accepted
time: 0ms
memory: 1460kb
input:
20 886 272 31 202 60 170 112 315 159 96 220 97 22 12 354 131 351 116 294 49 232
output:
4714
result:
ok 1 number(s): "4714"
Test #3:
score: 10
Accepted
time: 0ms
memory: 1444kb
input:
20 534 62 36 59 38 15 58 51 10 69 33 55 80 108 84 30 60 91 60 3 108
output:
28165
result:
ok 1 number(s): "28165"
Test #4:
score: 10
Accepted
time: 0ms
memory: 1784kb
input:
100 92 70 92 34 29 31 65 53 86 32 70 8 49 6 16 33 13 88 87 17 36 81 30 55 37 45 62 21 43 86 3 71 63 ...
output:
695127612
result:
ok 1 number(s): "695127612"
Test #5:
score: 10
Accepted
time: 0ms
memory: 1740kb
input:
92 95 71 17 42 1 28 31 69 76 17 11 18 64 46 36 70 73 52 23 22 59 12 1 86 81 81 28 79 30 57 72 40 29 ...
output:
477279530
result:
ok 1 number(s): "477279530"
Test #6:
score: 10
Accepted
time: 0ms
memory: 1744kb
input:
92 99 19 32 43 1 95 96 91 25 38 85 43 85 81 92 54 81 45 88 91 13 92 75 8 1 8 45 41 65 98 64 89 18 96...
output:
323420510
result:
ok 1 number(s): "323420510"
Test #7:
score: 10
Accepted
time: 3ms
memory: 9732kb
input:
1000 446 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
71062540
result:
ok 1 number(s): "71062540"
Test #8:
score: 10
Accepted
time: 0ms
memory: 9684kb
input:
1000 441 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
269683120
result:
ok 1 number(s): "269683120"
Test #9:
score: 10
Accepted
time: 0ms
memory: 10000kb
input:
1000 641 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
639341583
result:
ok 1 number(s): "639341583"
Test #10:
score: 10
Accepted
time: 5ms
memory: 12220kb
input:
993 995 396 599 552 737 171 773 317 827 21 985 200 652 958 722 792 386 80 343 704 220 821 80 924 1 7...
output:
158912972
result:
ok 1 number(s): "158912972"
Extra Test:
score: 0
Extra Test Passed