解题:HAOI2018 苹果树
统计贡献,每个大小为i的子树贡献就是$i(n-i)$,然后子树里又有$i!$种;同时这个子树的根不确定,再枚举这个根是$r$个放的,又有了$r!$种。子树内选点的方式因为子树的根被钦定了顺序所以只有一个组合数,子树外面的则是一个连乘积。答案就是
$i(n-i)i!r!C_{n-r}^{i-1}\prod\limits_{j=r-1}^{n-i-1}j$
$=(r-1)r*i*i!*(n-i)!$
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int N=;
- int n,mod,ans,fac[N],C[N][N];
- void Add(int &x,int y)
- {
- x+=y;
- if(x>=mod) x-=mod;
- }
- void exGCD(int a,int b,int &x,int &y)
- {
- if(!b) x=,y=;
- else exGCD(b,a%b,y,x),y-=a/b*x;
- }
- int Inv(int x)
- {
- int xx,yy;
- exGCD(x,mod,xx,yy);
- return (xx%mod+mod)%mod;
- }
- void Pre()
- {
- fac[]=;
- for(int i=;i<=n;i++) fac[i]=1ll*fac[i-]*i%mod;
- for(int i=;i<=n;i++) C[i][]=;
- for(int i=;i<=n;i++)
- for(int j=;j<=i;j++)
- C[i][j]=(C[i-][j-]+C[i-][j])%mod;
- }
- int main()
- {
- scanf("%d%d",&n,&mod),Pre();
- for(int i=;i<=n;i++)
- for(int j=;j<=n-i+;j++)
- Add(ans,(1ll*(i-)*i*j%mod)*(1ll*fac[j]*fac[n-j]%mod)%mod*C[n-i][j-]%mod);
- printf("%d",ans);
- return ;
- }
解题:HAOI2018 苹果树的更多相关文章
- 【BZOJ5305】[HAOI2018]苹果树(组合计数)
[BZOJ5305][HAOI2018]苹果树(组合计数) 题面 BZOJ 洛谷 题解 考虑对于每条边计算贡献.每条边的贡献是\(size*(n-size)\). 对于某个点\(u\),如果它有一棵大 ...
- [洛谷P4492] [HAOI2018]苹果树
洛谷题目链接:[HAOI2018]苹果树 题目背景 HAOI2018 Round2 第一题 题目描述 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C ...
- [HAOI2018]苹果树(组合数学,计数)
[HAOI2018]苹果树 cx巨巨给我的大火题. 感觉这题和上次考试gcz讲的那道有标号树的形态(不记顺序)计数问题很类似. 考虑如果对每个点对它算有贡献的其他点很麻烦,不知怎么下手.这个时候就想到 ...
- [BZOJ5305][Haoi2018]苹果树 组合数
题目描述 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C 发现每一天这棵树都会生长出一个新的结点. 第一天的时候, 果树会长出一个根结点, 以后每一 ...
- [BZOJ5305][HAOI2018]苹果树 组合数学
链接 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C 发现每一天这棵树都会生长出一个新的结点. 第一天的时候, 果树会长出一个根结点, 以后每一天, ...
- [BZOJ5305] [HAOI2018] 苹果树 数学 组合计数
Summary 题意很清楚: 小 \(C\) 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 \(C\) 发现每一天这棵树都会生长出一个新的结点. 第一天的时候 ...
- Luogu4492 [HAOI2018]苹果树 【动态规划】
题目分析: 思路不难想,考虑三个dp状态$f,g,d$. $g[i]$表示有$i$个点的堆的数量 $d[i]$表示有$i$个点的情况下所有的方案数中点到根的距离和 $f[i]$表示要求的答案. 不难发 ...
- HAOI2018苹果树
题解 首先所有生成树的情况树是\(n!\)的,因为第一次有1中方法,第二次有两种放法,以此类推... 然后我们发现距离这种东西可以直接枚举每条边算贡献. 于是我们枚举了一个点\(i\),又枚举了这个点 ...
- BZOJ.5305.[HAOI2018]苹果树(组合 计数)
LOJ BZOJ 洛谷 BZOJ上除了0ms的Rank1啦.明明这题常数很好优化的. 首先,\(n=1\)时有\(2\)个位置放叶子,\(n=2\)时有\(3\)个... 可知\(n\)个点的有标号二 ...
随机推荐
- JS --- 本地保存localStorage、sessionStorage用法总结
JS的本地保存localStorage.sessionStorage用法总结 localStorage.sessionStorage是Html5的特性,IE7以下浏览器不支持 为什么要掌握localS ...
- js 解决中文乱码的问题
1.对象 request response 对象setCharacterEncoding=UTF-8 1 <%@ page language="java" contentTy ...
- 神经网络-SGD-2
接上节: 3.梯度(gradient): def numerical_gradient(f,x): h=1e-5 grad=np.zeros_like(x) for index_x in range( ...
- spec文件中的 %pre %post %preun %postun
转载http://meinit.nl/rpm-spec-prepostpreunpostun-argument-values RPM has 4 parts where (shell) scripts ...
- mysql 常用字段类型
tinyint[(m)] [unsigned] [zerofill] 1字节 极小整数,数据类型用于保存一些范围的整数数值范围: 有符号: -128 - 127. 无符号: - 255 特别的: My ...
- java 环境变量配置 详解!
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 洛谷 p1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...
- codeforces285B
Find Marble CodeForces - 285B Petya and Vasya are playing a game. Petya's got n non-transparent glas ...
- ab与nc命令,tcpdump命令
ab与nc命令,tcpdump命令 ab -p post.txt -T application/json "http://127.0.0.1:8083/main/index&quo ...
- 资源推荐:特意挑选了11个可以称得上“神器”的Windows工具下载
特意挑选了11个可以称得上“神器”的Windows工具,安装包获取方式在文末. 以下神器包含:OCR文字识别.百度云超速下载工具.本地文件搜索工具.软件卸载器.本地视频播放器.图片去水印神器.百度文库 ...