ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#184078 | #3299. 队伍分配 | huyf1048 | 100 | 3130ms | 26424kb | C++11 | 1.1kb | 2023-08-10 10:35:20 | 2023-08-10 12:38:50 |
answer
#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#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: 3572kb
input:
7 7 6 3 6 3 6 3
output:
657
result:
ok 1 number(s): "657"
Test #2:
score: 0
Accepted
time: 2ms
memory: 3676kb
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: 2ms
memory: 3676kb
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: 2ms
memory: 3652kb
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: 3664kb
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: 2ms
memory: 3604kb
input:
1 1
output:
1
result:
ok 1 number(s): "1"
Test #7:
score: 0
Accepted
time: 2ms
memory: 3452kb
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: 1ms
memory: 3668kb
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: 4080kb
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: 2ms
memory: 11796kb
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: 6908kb
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: 5ms
memory: 11772kb
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: 203ms
memory: 26424kb
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: 177ms
memory: 21824kb
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: 150ms
memory: 15452kb
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: 100ms
memory: 12288kb
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: 219ms
memory: 26360kb
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: 3ms
memory: 11796kb
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: 195ms
memory: 26176kb
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: 56ms
memory: 13104kb
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: 62ms
memory: 13272kb
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: 53ms
memory: 13288kb
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: 60ms
memory: 13304kb
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: 64ms
memory: 13260kb
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: 47ms
memory: 13196kb
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: 57ms
memory: 13172kb
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: 60ms
memory: 13016kb
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: 87ms
memory: 12136kb
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: 186ms
memory: 25748kb
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: 153ms
memory: 18412kb
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: 164ms
memory: 23156kb
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: 160ms
memory: 20936kb
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: 172ms
memory: 23172kb
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: 175ms
memory: 24972kb
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: 165ms
memory: 24404kb
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: 169ms
memory: 25956kb
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: 141ms
memory: 19780kb
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: 1ms
memory: 4024kb
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: 3ms
memory: 3960kb
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: 2ms
memory: 3956kb
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: 1ms
memory: 3952kb
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: 4056kb
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: 3ms
memory: 4056kb
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: 3ms
memory: 3956kb
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: 4008kb
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: 3ms
memory: 4024kb
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: 0ms
memory: 4072kb
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: 3ms
memory: 4084kb
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: 3964kb
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: 3ms
memory: 4056kb
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: 3ms
memory: 3984kb
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: 2ms
memory: 4012kb
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: 2ms
memory: 3968kb
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: 3ms
memory: 4044kb
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"