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 比武招亲(上)(组合数学)相关推荐

  1. 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),收益为 ...

  2. 2021牛客寒假算法基础集训营5 B.比武招亲(上)

    2021牛客寒假算法基础集训营5 B.比武招亲(上) 题目链接 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐在榜上留下了这样一道问题,谁做出来了就可以 ...

  3. 2021牛客暑期多校训练营1 赛后总结

    比赛名称: 2021牛客暑期多校训练营1 比赛时间: 2021年7月17日 12:00 - 17:00 比赛结果: 3/11 自我总结: 这场比赛应该算是这个假期的第二场团队赛了, 之前打过一个比较简 ...

  4. 2021牛客暑期多校训练营9 Cells(LGV引理,FFT)

    2021牛客暑期多校训练营9 Cells(LGV引理,FFT) 题目链接 题意 在一个无限大的xyxyxy​坐标轴上,求从A={(0,a1),(0,a2),...,(0,an)}A=\{(0,a_1) ...

  5. 2021牛客暑期多校训练营

    2021牛客暑期多校训练营1 A- Alice and Bob /* 博弈问题 两堆石头,每人每次从其中一堆拿k(k>0)个, 同时从另一堆拿s*k个(s>=0),不能进行操作的即失败 * ...

  6. 训练实录 | 2021牛客暑期多校训练营2

    2021牛客暑期多校训练营2 传送门 C - Draw Grids solved by oye. 00:22:07(+) 题意: 给n,m两个数,表示有n行点和m列点,已知每次只能连两个相邻的点(斜的 ...

  7. 2021牛客暑期多校训练营9

    2021牛客暑期多校训练营9 题号 题目 知识点 A A Math Challenge B Best Subgraph C Cells D Divide-and-conquer on Tree E E ...

  8. 2021牛客暑期多校训练营5

    2021牛客暑期多校训练营5 题号 题目 知识点 A Away from College B Boxes 概率 C Cheating and Stealing D Double Strings 线性d ...

  9. 2021牛客暑期多校训练营4

    2021牛客暑期多校训练营4 题号 题目 知识点 A Course B Sample Game C LCS D Rebuild Tree E Tree Xor 思维+线段树 F Just a joke ...

最新文章

  1. 电子文件归档为什么非云不可
  2. python实现手机通讯录_python+uiautomator2实现需求:从通讯录添加手机号码作为SOS紧急号码...
  3. 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
  4. python 列表创建
  5. Android Studio安装genymotion模拟器
  6. Android Handler的使用方法
  7. UML总结---UML九种图关系说明
  8. 生物学家、钢管舞、全栈工程师,女程序员如何活得漂亮
  9. ❤️六万字《SpringMVC框架介绍—从入门到高级》(建议收藏)❤️
  10. Oracle报错:“ORA-02292:违反完整约束条件(XXX.FKXXX)- 已找到子记录
  11. html 4种居中方式
  12. 如何保证MQ消息队列的高可用
  13. GVS与唯康教育达成战略合作,共建智能家居人才培养高地
  14. ODAC Windows 安装
  15. APP微信登录后端PHP,PHP开发微信授权登录教程
  16. [计组笔记]存储器的扩展
  17. python三人同行七十稀_三人同行(三人同行什么意思)
  18. Android 悬浮窗口(及解决6.0以上无法显示问题)
  19. html如何自己做一个背景特效,背景效果实现方法总结
  20. uptime 之一 /proc/uptime

热门文章

  1. 计算机网络(一)——网络基础
  2. 构建安全稳固的Windows2000/XP操作系统(转)
  3. 【蓝桥杯每日一题】----纸张尺寸
  4. win8修改炉石服务器,炉石传说:新的炸服者出现了,这套操作下来就可以成功让炉石服务器成功崩溃...
  5. C# 超市收银系统——面向对象学习的总结
  6. css3蒲公英飘动效果_CSS3 Animation制作飘动的浮云和星星效果
  7. 两个八进制小数怎么相加_八进制怎么算
  8. 频分复用、时分复用和码分复用
  9. 2、前端开发:HTML知识总结——常用H5标签
  10. Adobe Premiere Pro 2020(Pr)安装后出现系统兼容性报告问题