2021牛客训练营5 B 比武招亲(上)(组合数学)
LINK
直接考虑数字 i i i作为最大值多少次,作为最小值多少次
最大值加,最小值减,即可得解。
首先 m m m个数字先选出一个 x x x作为最大值,相当于求 [ 1 , x − 1 ] [1,x-1] [1,x−1]选出 m − 1 m-1 m−1个数
求有多少种本质不同的方案
然后 m m m个数字先选出一个 x x x作为最小值,相当于求 [ x , n ] [x,n] [x,n]选出 m − 1 m-1 m−1个数
求有多少种本质不同的方案
我们发现本质都是相同的,稍微把模型转化以下,我们需要解决这样一个问题
m m m个小球分成 n n n组,求本质不同的分法
m m m个小球形成 m − 1 m-1 m−1个间隙,插入 n − 1 n-1 n−1块隔板可以分成 n n n组
方案数是 C m − 1 n − 1 C_{m-1}^{n-1} Cm−1n−1
但是由于每组可以为空,所以我们往每组里提前加一个小球,就不是空的了,方案数是
C m + n − 1 n − 1 C_{m+n-1}^{n-1} Cm+n−1n−1
[题外话]
其实也可以直接枚举每种方案的差值 d d d
差值为 d d d的最大最小值有 n − d n-d n−d种选法,剩下把 d + 1 d+1 d+1个不同的数拿出 m − 2 m-2 m−2个
这就和上面一样应用隔板法了
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1e6+10;
const int inf = 1e9;
const int mod = 998244353;
int ans = 0,fac[maxn],n,m;
int quick(int x,int n)
{int ans = 1;for( ; n ; n>>=1,x=x*x%mod )if( n&1 ) ans = ans*x%mod;return ans;
}
int c(int n,int m)
{if( n<m||n<0||m<0 ) return 0;return fac[n]*quick( fac[m]*fac[n-m]%mod,mod-2)%mod;
}
int get(int x) { return c(m-1+x,x-1); }
signed main()
{//枚举最小值fac[0] = 1;for(int i=1;i<=1000000;i++) fac[i] = fac[i-1]*i%mod;cin >> n >> m; m--;for(int i=1;i<=n;i++){ans = ( ans+i*get(i)%mod )%mod;ans = ( ans-i*get(n-i+1)%mod )%mod;}cout << ( ans%mod+mod )%mod;
}
2021牛客训练营5 B 比武招亲(上)(组合数学)相关推荐
- 2021牛客训练营 F.魏迟燕的自走棋(贪心并查集)
传送门 费用流会 T T T,但是没试过 H K HK HK之类的 STD 设武器作用于 x , y x,y x,y两个人(如果 k = 1 k=1 k=1那么令 x = y x=y x=y),收益为 ...
- 2021牛客寒假算法基础集训营5 B.比武招亲(上)
2021牛客寒假算法基础集训营5 B.比武招亲(上) 题目链接 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐在榜上留下了这样一道问题,谁做出来了就可以 ...
- 2021牛客暑期多校训练营1 赛后总结
比赛名称: 2021牛客暑期多校训练营1 比赛时间: 2021年7月17日 12:00 - 17:00 比赛结果: 3/11 自我总结: 这场比赛应该算是这个假期的第二场团队赛了, 之前打过一个比较简 ...
- 2021牛客暑期多校训练营9 Cells(LGV引理,FFT)
2021牛客暑期多校训练营9 Cells(LGV引理,FFT) 题目链接 题意 在一个无限大的xyxyxy坐标轴上,求从A={(0,a1),(0,a2),...,(0,an)}A=\{(0,a_1) ...
- 2021牛客暑期多校训练营
2021牛客暑期多校训练营1 A- Alice and Bob /* 博弈问题 两堆石头,每人每次从其中一堆拿k(k>0)个, 同时从另一堆拿s*k个(s>=0),不能进行操作的即失败 * ...
- 训练实录 | 2021牛客暑期多校训练营2
2021牛客暑期多校训练营2 传送门 C - Draw Grids solved by oye. 00:22:07(+) 题意: 给n,m两个数,表示有n行点和m列点,已知每次只能连两个相邻的点(斜的 ...
- 2021牛客暑期多校训练营9
2021牛客暑期多校训练营9 题号 题目 知识点 A A Math Challenge B Best Subgraph C Cells D Divide-and-conquer on Tree E E ...
- 2021牛客暑期多校训练营5
2021牛客暑期多校训练营5 题号 题目 知识点 A Away from College B Boxes 概率 C Cheating and Stealing D Double Strings 线性d ...
- 2021牛客暑期多校训练营4
2021牛客暑期多校训练营4 题号 题目 知识点 A Course B Sample Game C LCS D Rebuild Tree E Tree Xor 思维+线段树 F Just a joke ...
最新文章
- 知乎高赞:OracleJDK和OpenJDK有什么区别?网友:不愧是大神的回答~
- ns 25的IKE模式ipsec ***配置
- 屏幕截图功能的实现------Java篇
- oracle 自增1,oracle自增无法从1开始
- 业务多变的公司上云后蒸蒸日上
- 项目计划定制:项目计划划分与产品项目推进的有机结合
- Json动态添加属性
- 免费讲座:网站运营之人性、策略与实战
- dos2unix命令解决 Shell 脚本无法执行的问题
- Java内存监控程序_java内存监控工具及命令
- MySQL 8.0 drop table恢复
- 基于JavaScript实现的网页版贪吃蛇
- linux flock 命令安装,在Linux上使用flock命令控制程序的异步执行
- Swingbench 博客合集
- (翻译)Decision-Making in Driver-Automation Shared Control
- 基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类)
- xp下硬盘安装Ubuntu Kylin 14.04
- linux 防火墙 功能点,功能点(Funciton Point FP)估算法(三) 调整因子
- QGtkStyle was unable to detect the current GTK+ theme
- 原码、反码、补码之间的转换和简单运算