![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
组合计数
Are_you_ready
这个作者很懒,什么都没留下…
展开
-
Character Encoding(组合数学&隔板法&容斥原理)
题目:https://vjudge.z180.cn/problem/HDU-6397题意:给三个数n,m,k表示可以从0到n-1选数,选出m个数使他们的加和等于k,例如选三个数使它们的和等于1,1-0-0和0-0-1是不同方案,问能够组成k的方案数。题解:首先不考虑n,这里的k看成k个小球,然后放到m个盒子里,就可以使用隔板法,可以为空的话就是答案就是Cx+m−1m−1C_{x+m-1}^{m-1}\textrm{}Cx+m−1m−1,但是这里还有一个n的限制,就是当单个盒子面放的>=n是不翻译 2021-06-25 16:40:26 · 162 阅读 · 0 评论 -
第二类斯特林数(Stirling)总结
模型1:n个不同的小球放到m个相同的盒子里面,不允许盒子为空(第二类斯特林数),即S(n,m)。那么S(n,m)由谁转移而来:1:n-1个小球放满了m个盒子,那么剩下的一个小球放在m个盒子的任何一个都行,即S(n,m)=S(n-1,m)*m;2:n-1个小球已经放了m-1盒子,剩下一个小球放第m个盒子S(n,m)=S(n-1,m)所以得到通式:S(n,m)=S(n-1,m-1)+S(n-1,m)*m。模型2:n个不同的小球放入m个不同的盒子中,不允许盒子为空:方案数=S(n,m)*m!模型3:n原创 2021-05-12 16:15:35 · 856 阅读 · 0 评论 -
B - Bobby‘s Bet(期望+组合数)
题目:https://vjudge.net/contest/425090#problem/B题意:摇色子游戏,色子有s面,每一面的数分别是1-s,在y回合里面是否至少有x回合摇出来的数大于等于r,如果是的话,那我赢w块钱,否则输一块钱,问:我是否能赢钱,能的话出去yes,否则输出no。题解:算出我总共赢的概率,然后乘以w,这是期望,然后看一下是否比1大就行。算总共赢的概率:首先y回合总共有pow(s,y)中方案,那么算出我能赢的方案数,比一下就行。算我赢的方案数:首先枚举我从赢x-y局,然后C(y,原创 2021-03-03 21:55:29 · 186 阅读 · 1 评论 -
数三角形acwing(思维+组合数学)
给定一个 n×m 的网格,请计算三点都在格点上的三角形共有多少个。下图为 4×4 的网格上的一个三角形。注意:三角形的三点不能共线。输入格式:输入一行,包含两个空格分隔的正整数 m 和 n。输出格式:输出一个正整数,为所求三角形数量。题解:首先n+1,m+1,题目给的是网格数,转换为网格点数 ,首先求出C(nm,3),这样就是总共任选三个点的方案数,然后减去共线的方案数就是答案。共线的分为三种:1、竖直线上的是mC(n,3),代表每列任选三个,总共m列2、水平线上的是nC(m,3)原创 2021-01-22 16:38:11 · 284 阅读 · 0 评论 -
车的放置acwing(放置东西,不能在同一行或同一列&&逆元预处理求组合计数)
题目:https://www.acwing.com/activity/content/11/可能需要报课才能做有下面这样的一个网格棋盘,a,b,c,d 表示了对应边长度,也就是对应格子数。当 a=b=c=d=2 时,对应下面这样一个棋盘:要在这个棋盘上放 k 个相互不攻击的车,也就是这 k 个车没有两个车在同一行,也没有两个车在同一列,问有多少种方案。只需要输出答案 mod100003 后的结果。输入格式:共一行,五个非负整数 a,b,c,d,k。输出格式:包括一个正整数,为答案 mod原创 2021-01-19 18:39:28 · 218 阅读 · 0 评论 -
组合计数(卡特兰数&&画坐标轴)
很多排列都是卡特兰数将这个题抽象成坐标轴,0代表往x轴走一步,1代表往y轴走一步,所以走到(n,n)这个位置,并且每一种走法都不能再x=y这条线上面。这里用补集的方法,所有走到(n,n)的方案总数是C(2n,n),相当于n个1和n个0里面选n个数,那么(n,n)关于x=y的对称点是(n-1,n+1),那么C(2n,n-1)就是走到(n-1,n+1)这个点的方案数,无论哪一种走法,只要走到了这个点,那么一定会经过x=y这条线上面的一些点(不是这条线上的点,是上面的点,意思就是肯定会穿过这条线)。又如果穿过原创 2021-01-19 16:15:21 · 164 阅读 · 0 评论 -
组合计数不取模&高精度乘法&质因分解预处理
可能需要报课才能做题目:https://www.acwing.com/problem/content/890/wzw#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+9;int prime[N];int vis[N];int cnt;int sum[N];void init(int n){ //线性筛 vis[0]=vis[1]=1; for(in原创 2021-01-19 14:59:47 · 117 阅读 · 1 评论 -
组合计数m和n(longlong级别)很大但p不大(卢卡斯定理)
给定n组询问,每组询问给定三个整数a,b,p,其中p是质数,请你输出Cba mod p的值。输入格式:第一行包含整数n。接下来n行,每行包含一组a,b,p。输出格式:共n行,每行输出一个询问的解。数据范围:1≤n≤20,1≤b≤a≤1e18,1≤p≤1e5,题目:https://www.acwing.com/problem/content/889/-wzw#include <iostream>#include <string>#include<bits原创 2021-01-18 19:43:26 · 127 阅读 · 0 评论 -
组合计数n和m较大有取模p&p为质数p可以很大(求逆元&预处理)
题目:https://www.acwing.com/problem/content/888/可能需要报课才能做题解:求组合数的公式里面有个除法,除法是不能直接参与取模运算的,用求逆元的方法就可以了#include <iostream>#include <string>#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+7;const int mod原创 2021-01-18 17:25:28 · 141 阅读 · 0 评论 -
组合数学(递推法)
约翰要带 N 只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛。牛们要站成一排,但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至少要有 K 只牝牛。请计算一共有多少种排队的方法,所有牡牛可以看成是相同的,所有牝牛也一样,答案对 5000011 取模。输入格式:一行,输入两个整数 N 和 K。输出格式:一个整数,表示排队的方法数。数据范围:1≤N≤1e5,0≤K<N题目:https://www.acwing.com/problem/content/1309原创 2021-01-18 16:02:58 · 197 阅读 · 0 评论 -
求组合数不取模&&高精度三维数组(递推求组合数)
题目:https://www.acwing.com/problem/content/1310/可能需要报课才能做简单一点的一个题难点:求组合数,不取模#include <bits/stdc++.h>#include<iostream>using namespace std;typedef long long ll;const int N=150;int f[1000][100][N]; //高精度数组int kmi(int a,int b,int q){ //快原创 2021-01-18 15:45:34 · 116 阅读 · 0 评论 -
求组合数取模(二维数组递推法 && n*m时间复杂度)
题目:https://www.acwing.com/activity/content/11/根据公式:#include <bits/stdc++.h>#include<iostream>using namespace std;typedef long long ll;const int mod=1e9+7;const int N=2005;int c[N][N];void init(){ for(int i=0;i<N;i++){ fo原创 2021-01-18 15:27:16 · 194 阅读 · 1 评论