
----组合数
欣君
追寻那如樱花般的绚烂
展开
-
2020牛客多校#3 J - Operating on the Tree 树形DP+组合数学
题目链接: https://ac.nowcoder.com/acm/contest/5668/J 这题来是2014北京区域赛的原题。介绍的做法与官方题解不同,思想来自HDU大佬的题解。 设dp_numi,jdp\_num_{i,j}dp_numi,j表示以节点iii为根的子树内,根节点iii被第jjj位选取且对答案产生贡献的总方案数 设dp_deli,jdp\_del_{i,j}dp_deli,j表示以节点iii为根的子树内,根节点iii被第jjj位选取后,对其子节点的贡献影响(由于节点iii被选取了,原创 2020-07-23 19:28:10 · 259 阅读 · 0 评论 -
51nod 1453 抽彩球
对于每种颜色,为了符合题意可以先将最后的球单独考虑。 对于第1种颜色,除去最后的球,有 c[1]-1 个球。在为空的序列上随机放置,有 C(c[i]-1,c[i]-1)=1 种放法,然后将被单独考虑的球放在末尾。 对于第2种颜色, 除去最后的球,有 c[2]-1 个球。在已有c[1]个球的序列上随机放置,有 C(c[1]+c[2]-1,c[2]-1) 种方法,然后将被单独考虑的球放在末尾。原创 2016-11-06 15:22:48 · 268 阅读 · 0 评论 -
51nod 1677 treecnt
可以计算出每条边出现的次数,其总和就是答案。 对于任意一条边,若其左端有x个节点,右端有y个节点。 那么这条边的出现次数为 C(n,k)-C(x,k)-C(y,k) 计算组合数时,预处理阶乘和逆元。 #include using namespace std; const long long mod=1e9+7; const int MAXN=100100; long long fac[原创 2016-11-29 20:39:46 · 384 阅读 · 0 评论 -
51nod 1627 瞬间移动
ans=sum( C(n-2,i) * C(m-2,i) ) 然后求下逆元就好了。 #include using namespace std; const long long mod=1e9+7; const int MAXN=100100; long long fac[MAXN],inv[MAXN]; long long powmod(long long x,long long p) {原创 2016-12-07 21:38:35 · 446 阅读 · 0 评论 -
51nod 1189 阶乘分数
(x-n!)*(y-n!)=(n!)^2 分解 n! 的质因数即可。分解时,需要优化下。 #include using namespace std; const int MAXN=1000100; const long long mod=1e9+7; int npri[MAXN],prime[MAXN],sum[MAXN]; long long powmod(long long x,lon原创 2016-12-08 19:22:00 · 278 阅读 · 0 评论 -
51nod 1556 计算
默慈金数的应用 在一个“网格”上,若限定“每步只能向右移动一格(可以向右上、右下横向向右),并禁止移动到y=0以下的地方”,则以这种走法用n步从(0,0)移动至(n,0)的可能形成的路径的总数为n的默慈金数。 初始状态: M[0]=1 M[1]=1 M[2]=2 递推公式: M[n+1]=((2n+3)*M[n]+3n*M[n-1])/(n+3) 直接计算比较困难,可以计算原创 2017-02-08 15:51:01 · 314 阅读 · 0 评论 -
51nod 1161 Partial Sums
找规律可以得到,经过k次变换后,a[j]在i上的累加是a[j]*C(i-j+k-1,k-1)。 由于k-1不变,因此可以用递推公式 C(n+1,m)=C(n,m)*(n+1)/(n-m+1) 计算组合数。 #include using namespace std; const long long mod=1e9+7; const int MAXN=5050; long long a[MA原创 2017-02-12 11:22:28 · 327 阅读 · 0 评论 -
51nod 1799 二分答案
写个类似的递归过程,以k为目标数。 计算阶乘的时候,打表水过。。。 //#include #include #include #include #include using namespace std; const long long mod=1e9+7; long long a[110]={1,682498929,491101308,76479948,723816384,67347853原创 2017-07-04 17:11:04 · 298 阅读 · 0 评论 -
51nod 1806 wangyurzee的树
purfer sequence的应用 #include using namespace std; const long long mod=1e9+7; const int MAXN=1000100; long long fac[MAXN],inv[MAXN]; long long powmod(long long x,long long p) { long long ret=1; whi原创 2017-07-14 13:33:43 · 119 阅读 · 0 评论