UOJ Logo

NOI.AC

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