UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#184077#3299. 队伍分配huyf10481004667ms24048kbC++111.1kb2023-08-10 10:34:062023-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"