QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#835476#9561. 树数叔术Nityacke100 ✓59ms18292kbC++20949b2024-12-28 12:03:082024-12-28 12:03:09

Judging History

你现在查看的是最新测评结果

  • [2024-12-28 12:03:09]
  • 评测
  • 测评结果:100
  • 用时:59ms
  • 内存:18292kb
  • [2024-12-28 12:03:08]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=155;
int n,m,H,C[N][N],fac[N],f[N][N][N],g[N][N];
inline void add(int &a,int b){a=(a+b)%H;}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>m>>H;
	if(m>n) return cout<<"0\n",0; 
	for(int i=0;i<=n;++i){
		C[i][0]=1,fac[i]=i?fac[i-1]*i%H:1;
		for(int j=1;j<=i;++j) C[i][j]=(C[i-1][j-1]+C[i-1][j])%H;
	}
	f[0][1][0]=1;
	for(int i=0;i<m;++i){
		for(int j=1;j<=n;++j)
			for(int k=0;k<=j;++k)
				if(f[i][j][k]){
					if(j>=2) for(int p=0;j+p<=n;++p) add(g[j+p][k],f[i][j][k]*C[p+j-2][j-2]);
					if(j>=2) add(f[i+1][j][k],H-f[i][j][k]);
					add(f[i+1][j+1][k],f[i][j][k]*j),add(f[i+1][j+2][k+1],f[i][j][k]*(j-1));
				}
		for(int j=1;j<=n;++j)
			for(int k=0;k<=j;++k)
				if(g[j][k]){
					for(int q=0;q<=k;++q) add(f[i+1][j][k-q],g[j][k]*C[k][q]);
					g[j][k]=0;
				}
	}
	cout<<f[m][n][0]*fac[n]%H<<"\n";
}

详细

Subtask #1:

score: 5
Accepted

Test #1:

score: 5
Accepted
time: 0ms
memory: 3596kb

input:

1 1 624295285

output:

0

result:

ok single line: '0'

Test #2:

score: 5
Accepted
time: 0ms
memory: 3588kb

input:

4 684813415 564954712

output:

0

result:

ok single line: '0'

Test #3:

score: 5
Accepted
time: 0ms
memory: 3700kb

input:

4 2 844826878

output:

24

result:

ok single line: '24'

Test #4:

score: 5
Accepted
time: 0ms
memory: 3584kb

input:

4 17724073 252218682

output:

0

result:

ok single line: '0'

Test #5:

score: 5
Accepted
time: 0ms
memory: 3744kb

input:

4 3 697681963

output:

384

result:

ok single line: '384'

Subtask #2:

score: 15
Accepted

Test #6:

score: 15
Accepted
time: 0ms
memory: 3648kb

input:

6 4 956647977

output:

238320

result:

ok single line: '238320'

Test #7:

score: 15
Accepted
time: 0ms
memory: 3588kb

input:

6 450615260 491361886

output:

0

result:

ok single line: '0'

Test #8:

score: 15
Accepted
time: 0ms
memory: 5724kb

input:

6 5 339344353

output:

933120

result:

ok single line: '933120'

Test #9:

score: 15
Accepted
time: 0ms
memory: 3708kb

input:

6 3 842228619

output:

23760

result:

ok single line: '23760'

Test #10:

score: 15
Accepted
time: 0ms
memory: 3696kb

input:

6 5 331699652

output:

933120

result:

ok single line: '933120'

Subtask #3:

score: 30
Accepted

Test #11:

score: 30
Accepted
time: 2ms
memory: 4904kb

input:

48 26 424594716

output:

362283012

result:

ok single line: '362283012'

Test #12:

score: 30
Accepted
time: 0ms
memory: 3588kb

input:

49 1000000000 738885247

output:

0

result:

ok single line: '0'

Test #13:

score: 30
Accepted
time: 0ms
memory: 7244kb

input:

48 39 688951620

output:

598399200

result:

ok single line: '598399200'

Test #14:

score: 30
Accepted
time: 0ms
memory: 3716kb

input:

50 476039414 292870080

output:

0

result:

ok single line: '0'

Test #15:

score: 30
Accepted
time: 2ms
memory: 5532kb

input:

50 48 245196368

output:

123576912

result:

ok single line: '123576912'

Subtask #4:

score: 50
Accepted

Test #16:

score: 50
Accepted
time: 0ms
memory: 3648kb

input:

150 526250070 197316869

output:

0

result:

ok single line: '0'

Test #17:

score: 50
Accepted
time: 50ms
memory: 17280kb

input:

149 116 671784452

output:

18945228

result:

ok single line: '18945228'

Test #18:

score: 50
Accepted
time: 46ms
memory: 17620kb

input:

146 144 906402626

output:

438777234

result:

ok single line: '438777234'

Test #19:

score: 50
Accepted
time: 48ms
memory: 17832kb

input:

147 143 705666477

output:

70408701

result:

ok single line: '70408701'

Test #20:

score: 50
Accepted
time: 59ms
memory: 18292kb

input:

150 147 453481175

output:

336290325

result:

ok single line: '336290325'