ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#184077 | #3299. 队伍分配 | huyf1048 | 100 | 4667ms | 24048kb | C++11 | 1.1kb | 2023-08-10 10:34:06 | 2023-08-10 12:38:47 |
answer
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod = 998244353;
ll n,x,a[2005],fac[2005],dv[2005],dp[2005][2005];
ll ksm(ll a,ll b,ll p)
{
ll ret = 1;a %= p;
while(b)
{
if(b & 1)
ret = ret * a % p;
a = a * a % p,b >>= 1;
}
return ret;
}
void init()
{
fac[0] = dv[0] = 1;
for(ll i = 1;i <= 2001;i++)
fac[i] = fac[i - 1] * i % mod;
dv[2001] = ksm(fac[2001],mod - 2,mod);
for(ll i = 2000;i > 0;i--)
dv[i] = dv[i + 1] * (i + 1) % mod;
}
ll C(ll a,ll b)
{
if(a < b)
return 0;
return fac[a] * dv[b] % mod * dv[a - b] % mod;
}
ll solve(ll cur,ll val)
{
if(cur == 1)
return 1;
if(dp[cur][val])
return dp[cur][val];
ll cnt = 1;
for(ll i = 0;i * cur <= val;i++)
{
dp[cur][val] = (dp[cur][val] + solve(cur - 1,val - i * cur + a[cur - 1]) * cnt % mod * dv[i] % mod) % mod;
cnt = cnt * C(val - i * cur,cur) % mod;
}
return dp[cur][val];
}
int main()
{
scanf("%lld",&n),init();
for(ll i = 1;i <= n;i++)
scanf("%lld",&x),a[x]++;
printf("%lld",solve(n,a[n]));
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Subtask #1:
score: 23
Accepted
Test #1:
score: 23
Accepted
time: 0ms
memory: 1256kb
input:
7 7 6 3 6 3 6 3
output:
657
result:
ok 1 number(s): "657"
Test #2:
score: 0
Accepted
time: 1ms
memory: 1268kb
input:
10 9 5 2 9 4 1 8 2 10 9
output:
6600
result:
ok 1 number(s): "6600"
Test #3:
score: 0
Accepted
time: 0ms
memory: 1288kb
input:
15 13 13 13 7 13 13 13 13 13 13 13 14 9 13 13
output:
380931696
result:
ok 1 number(s): "380931696"
Test #4:
score: 0
Accepted
time: 0ms
memory: 1284kb
input:
15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
output:
56672664
result:
ok 1 number(s): "56672664"
Test #5:
score: 0
Accepted
time: 0ms
memory: 1288kb
input:
15 7 7 7 7 8 8 8 8 7 7 7 8 8 8 8
output:
377876427
result:
ok 1 number(s): "377876427"
Test #6:
score: 0
Accepted
time: 0ms
memory: 1232kb
input:
1 1
output:
1
result:
ok 1 number(s): "1"
Test #7:
score: 0
Accepted
time: 0ms
memory: 1284kb
input:
15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
output:
384714192
result:
ok 1 number(s): "384714192"
Subtask #2:
score: 12
Accepted
Test #8:
score: 12
Accepted
time: 0ms
memory: 1296kb
input:
17 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
output:
211799312
result:
ok 1 number(s): "211799312"
Test #9:
score: 0
Accepted
time: 0ms
memory: 1768kb
input:
133 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
output:
211020576
result:
ok 1 number(s): "211020576"
Test #10:
score: 0
Accepted
time: 3ms
memory: 9400kb
input:
1998 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2...
output:
612186211
result:
ok 1 number(s): "612186211"
Test #11:
score: 0
Accepted
time: 0ms
memory: 4492kb
input:
799 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
output:
164811484
result:
ok 1 number(s): "164811484"
Test #12:
score: 0
Accepted
time: 6ms
memory: 9400kb
input:
1999 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2...
output:
64870847
result:
ok 1 number(s): "64870847"
Subtask #3:
score: 23
Accepted
Test #13:
score: 23
Accepted
time: 229ms
memory: 24048kb
input:
2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 ...
output:
750925682
result:
ok 1 number(s): "750925682"
Test #14:
score: 0
Accepted
time: 204ms
memory: 19652kb
input:
2000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 ...
output:
333849364
result:
ok 1 number(s): "333849364"
Test #15:
score: 0
Accepted
time: 166ms
memory: 13280kb
input:
2000 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333 333...
output:
391703579
result:
ok 1 number(s): "391703579"
Test #16:
score: 0
Accepted
time: 109ms
memory: 9972kb
input:
2000 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50...
output:
184769713
result:
ok 1 number(s): "184769713"
Test #17:
score: 0
Accepted
time: 224ms
memory: 24044kb
input:
2000 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 1998 ...
output:
750923681
result:
ok 1 number(s): "750923681"
Test #18:
score: 0
Accepted
time: 0ms
memory: 9412kb
input:
2000 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 1 1...
output:
1
result:
ok 1 number(s): "1"
Test #19:
score: 0
Accepted
time: 382ms
memory: 23852kb
input:
2000 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 1777 ...
output:
22075503
result:
ok 1 number(s): "22075503"
Subtask #4:
score: 18
Accepted
Test #20:
score: 18
Accepted
time: 96ms
memory: 10928kb
input:
2000 399 18 3 4 4 32 141 185 2 10 15 130 35 708 3 763 20 2 882 1853 3 4 197 7 3 121 3 3 644 64 3 166...
output:
261183482
result:
ok 1 number(s): "261183482"
Test #21:
score: 0
Accepted
time: 95ms
memory: 10896kb
input:
2000 65 845 7 4 3 5 1352 85 2 7 18 28 9 3 27 1192 16 192 16 78 878 82 5 112 14 3 11 24 93 14 93 398 ...
output:
393933436
result:
ok 1 number(s): "393933436"
Test #22:
score: 0
Accepted
time: 96ms
memory: 10860kb
input:
2000 2 16 7 393 19 2 406 206 2 22 10 401 4 88 510 9 818 202 308 1078 40 7 13 705 10 5 7 38 188 9 40 ...
output:
786333240
result:
ok 1 number(s): "786333240"
Test #23:
score: 0
Accepted
time: 90ms
memory: 10932kb
input:
2000 115 2 82 99 222 39 8 101 46 184 2 13 8 3 140 50 33 6 83 109 3 2 41 477 1795 3 351 408 135 2 33 ...
output:
46975065
result:
ok 1 number(s): "46975065"
Test #24:
score: 0
Accepted
time: 63ms
memory: 10960kb
input:
2000 9 33 27 2 7 29 2 949 15 4 809 2 1910 21 564 11 39 201 4 45 111 888 52 8 4 1095 41 34 62 24 25 4...
output:
124499081
result:
ok 1 number(s): "124499081"
Test #25:
score: 0
Accepted
time: 60ms
memory: 10852kb
input:
2000 215 1471 2 21 475 15 79 13 5 214 106 1657 64 849 8 184 247 5 501 204 411 361 195 29 43 763 33 1...
output:
971398185
result:
ok 1 number(s): "971398185"
Test #26:
score: 0
Accepted
time: 63ms
memory: 10852kb
input:
2000 10 31 1961 3 5 68 169 5 130 2 96 221 8 15 1136 3 1332 13 889 2 24 5 2 25 586 3 4 8 304 6 9 859 ...
output:
377962615
result:
ok 1 number(s): "377962615"
Test #27:
score: 0
Accepted
time: 59ms
memory: 10744kb
input:
2000 47 45 6 8 93 377 2 12 410 90 4 215 321 4 130 4 3 1190 2 4 12 14 371 2 191 7 28 3 2 52 59 7 4 54...
output:
456938485
result:
ok 1 number(s): "456938485"
Test #28:
score: 0
Accepted
time: 88ms
memory: 9960kb
input:
2000 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10...
output:
372553909
result:
ok 1 number(s): "372553909"
Test #29:
score: 0
Accepted
time: 268ms
memory: 23380kb
input:
2000 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332 332...
output:
915628630
result:
ok 1 number(s): "915628630"
Test #30:
score: 0
Accepted
time: 247ms
memory: 16040kb
input:
2000 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839 839...
output:
140106173
result:
ok 1 number(s): "140106173"
Test #31:
score: 0
Accepted
time: 289ms
memory: 20748kb
input:
2000 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147 147...
output:
844601499
result:
ok 1 number(s): "844601499"
Test #32:
score: 0
Accepted
time: 256ms
memory: 18660kb
input:
2000 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 1043 ...
output:
197212701
result:
ok 1 number(s): "197212701"
Test #33:
score: 0
Accepted
time: 326ms
memory: 20852kb
input:
2000 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 1269 ...
output:
132433582
result:
ok 1 number(s): "132433582"
Test #34:
score: 0
Accepted
time: 330ms
memory: 22552kb
input:
2000 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 1450 ...
output:
555602406
result:
ok 1 number(s): "555602406"
Test #35:
score: 0
Accepted
time: 304ms
memory: 22104kb
input:
2000 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 1424 ...
output:
338170032
result:
ok 1 number(s): "338170032"
Test #36:
score: 0
Accepted
time: 328ms
memory: 23588kb
input:
2000 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 1655 ...
output:
916736173
result:
ok 1 number(s): "916736173"
Subtask #5:
score: 24
Accepted
Test #37:
score: 24
Accepted
time: 272ms
memory: 17464kb
input:
2000 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886 886...
output:
98739085
result:
ok 1 number(s): "98739085"
Test #38:
score: 0
Accepted
time: 0ms
memory: 1644kb
input:
100 45 28 13 9 12 32 5 13 47 5 17 52 4 3 82 21 4 5 5 43 10 60 3 95 91 48 98 8 12 4 6 15 88 56 5 44 6...
output:
716930637
result:
ok 1 number(s): "716930637"
Test #39:
score: 0
Accepted
time: 0ms
memory: 1636kb
input:
100 4 70 22 81 32 63 4 49 85 73 24 79 25 3 5 15 4 12 81 13 13 2 2 34 2 2 23 3 2 25 7 12 26 2 72 7 2 ...
output:
855344261
result:
ok 1 number(s): "855344261"
Test #40:
score: 0
Accepted
time: 0ms
memory: 1648kb
input:
100 16 91 3 37 11 25 55 91 6 4 21 62 29 85 3 2 46 10 5 40 49 9 4 6 7 56 2 6 24 2 33 35 92 24 42 6 2 ...
output:
437250457
result:
ok 1 number(s): "437250457"
Test #41:
score: 0
Accepted
time: 0ms
memory: 1644kb
input:
100 9 86 27 83 71 97 52 16 22 2 28 70 61 2 5 15 82 37 30 64 34 44 43 2 52 4 3 33 15 70 46 12 4 2 3 5...
output:
798956636
result:
ok 1 number(s): "798956636"
Test #42:
score: 0
Accepted
time: 0ms
memory: 1648kb
input:
100 2 4 25 60 16 16 89 59 17 76 32 2 43 63 86 5 2 62 79 2 20 55 27 3 10 47 17 17 52 28 32 20 83 20 6...
output:
781288572
result:
ok 1 number(s): "781288572"
Test #43:
score: 0
Accepted
time: 0ms
memory: 1648kb
input:
100 2 79 63 4 73 90 6 8 3 88 44 65 52 3 86 37 70 6 39 5 33 4 63 8 16 100 71 18 77 5 11 77 67 4 3 9 6...
output:
361985366
result:
ok 1 number(s): "361985366"
Test #44:
score: 0
Accepted
time: 2ms
memory: 1648kb
input:
100 99 97 7 2 82 4 12 16 19 2 2 33 39 9 35 2 4 82 2 31 77 26 2 2 79 2 98 71 2 7 51 96 2 67 4 27 2 16...
output:
549310985
result:
ok 1 number(s): "549310985"
Test #45:
score: 0
Accepted
time: 2ms
memory: 1644kb
input:
100 37 11 44 44 37 89 8 18 8 4 8 2 12 8 9 75 44 4 3 86 5 33 11 94 16 88 62 11 2 42 17 9 4 3 99 9 3 2...
output:
361748618
result:
ok 1 number(s): "361748618"
Test #46:
score: 0
Accepted
time: 2ms
memory: 1656kb
input:
100 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 ...
output:
943698880
result:
ok 1 number(s): "943698880"
Test #47:
score: 0
Accepted
time: 3ms
memory: 1664kb
input:
100 14 14 14 14 14 14 14 14 14 14 14 14 14 14 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 ...
output:
62621141
result:
ok 1 number(s): "62621141"
Test #48:
score: 0
Accepted
time: 2ms
memory: 1668kb
input:
100 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 ...
output:
652178966
result:
ok 1 number(s): "652178966"
Test #49:
score: 0
Accepted
time: 0ms
memory: 1656kb
input:
100 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 ...
output:
993532437
result:
ok 1 number(s): "993532437"
Test #50:
score: 0
Accepted
time: 0ms
memory: 1656kb
input:
100 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 ...
output:
483641368
result:
ok 1 number(s): "483641368"
Test #51:
score: 0
Accepted
time: 0ms
memory: 1676kb
input:
100 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 79 ...
output:
359441590
result:
ok 1 number(s): "359441590"
Test #52:
score: 0
Accepted
time: 0ms
memory: 1708kb
input:
100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 ...
output:
142398910
result:
ok 1 number(s): "142398910"
Test #53:
score: 0
Accepted
time: 0ms
memory: 1656kb
input:
100 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 ...
output:
584268175
result:
ok 1 number(s): "584268175"
Test #54:
score: 0
Accepted
time: 2ms
memory: 1636kb
input:
100 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10 ...
output:
859265062
result:
ok 1 number(s): "859265062"