码迷,mamicode.com
首页 > 移动开发 > 详细

Luogu 4492 [HAOI2018]苹果树 组合数

时间:2018-05-27 13:40:40      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:int   bsp   lld   printf   阶乘   view   define   class   技术分享   

https://www.luogu.org/problemnew/show/P4492

找每个编号的点的父边的贡献,组合数和阶乘就能算了。

我考场上怎么就是没想到呢。

调了好久好久好久好久调不出来,样例一直过不了,刚刚发现是溢出了,我是个zz。

技术分享图片
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<iostream>
 6 using namespace std;
 7 #define LL long long
 8 LL n;LL p;
 9 LL f[2010][2010]={};
10 LL zu[2010][2010]={};
11 LL t[2010]={};
12 int main(){
13     scanf("%lld%lld",&n,&p);
14     LL ans=0; zu[0][0]=1; t[0]=1;
15     for(LL i=1;i<=n;i++)t[i]=(t[i-1]*i)%p;
16     for(LL i=1;i<=n;i++){
17         zu[i][0]=1;
18         for(LL j=1;j<=i;j++)zu[i][j]=(zu[i-1][j]+zu[i-1][j-1])%p;
19     }
20     for(LL i=1;i<=n;i++){
21         f[i][0]=1;
22         for(int j=1;j<=n;j++){
23             f[i][j]=(f[i][j-1]*(i+j-1))%p;
24         }
25     }
26     for(LL i=2;i<=n;i++){
27         for(LL j=n-i+1;j>0;j--){
28             LL w=(zu[n-i][j-1]*t[j])%p;
29             w=(w*((t[i]*f[i-1][n-i-j+1])%p))%p;
30             w=(w*((j*(n-j))%p))%p;
31             ans=(ans+w)%p;
32         }
33     }
34     printf("%lld\n",ans);
35     return 0;
36 }
View Code

 

Luogu 4492 [HAOI2018]苹果树 组合数

标签:int   bsp   lld   printf   阶乘   view   define   class   技术分享   

原文地址:https://www.cnblogs.com/137shoebills/p/9095553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!