2021牛客寒假算法基础集训营5 B 比武招亲(上)
题目链接
题目描述
思路
选取的序列a
可能的贡献有 0,1,2,3,…,n-1。
设a
的贡献为d
。
贡献为d
的序列有 [1,…,1+d], [2,…,2+d]… (共有n-d
个这样的序列)
对贡献为d
的序列a
进行分析。
如果a
的第一位为v
,最后一位就为v+d
。(因为a
为非递减数列)
剩余m-2
个地方需要填充。
问题就转变为,将 [v,v+1,v+2,…,v+d] 中的m-2个数字(可以重复,但序列需要是非递减数列)填入序列,求本质不同的序列个数。
用到的知识点为隔板法
举例说明一下:
将[1,2,3]中的6个数字填入序列,求本质不同的序列(非递减)个数。
设序列为[a,b,c,d,e,f],将2个板子插入序列中,可以得到其中一个为[a,b|
c,d,e|
f]
将第一个隔板左边的序列[a,b]视为[1,1]
将第一个隔板和第二个隔板之间的序列[c,d,e]视为[2,2,2]
将第二个隔板右边的序列[f]视为[3]
如果[1,2,3]中每个数字至少挑出来一个的话,结果为 C 5 2 C^{2}_5 C52
因为挑出来的个数可以为0,可以当做增加了3个可放置隔板的位置,结果为 C 5 + 3 2 C^{2}_{5+3} C5+32
如果不是很理解的话,可以将这个问题视为盒子问题来考虑,相当于将6个小球放在3个盒子里面,用2个隔板将小球分开。
如果每个盒子里面至少有一个小球的话,结果为 C 5 2 C^2_5 C52(有5个地方可以放隔板)
如果盒子里面的小球个数可以为0的话,将原本盒子里面小球个数视为-1(至少一个就变成了可以是0个),需要放置的小球个数就变成6+3了,结果为 C 5 + 3 2 C^2_{5+3} C5+32
AC的代码
#include<bits/stdc++.h>
#define int long long
using namespace std;const int N = 1e7, mod = 998244353;
int fac[N];// 快速幂
int power(int a, int b){int res = 1;while(b){if(b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}// 求逆元
int inv(int a){/*因为 x^(p-1) % p = 1(费马小定理)所以 [x^(p-2) * x] % p = 1x^(p-2) 相当于 x 的逆元*/return power(a, mod - 2);
}// 对阶乘预处理
void f(){fac[0] = 1;fac[1] = 1;for(int i = 2; i <= N; i++)fac[i] = fac[i - 1] * i % mod;
}// C^a_b
int C(int a, int b){return fac[b] * inv(fac[b - a]) % mod * inv(fac[a]) % mod;
}signed main(){f();int n, m;cin>>n>>m;int res = 0;for(int d = 1; d <= n - 1; d++){res += (n - d) * C(d, (m - 3) + (d + 1)) % mod * d % mod;res = res % mod;}cout<<res;
}
2021牛客寒假算法基础集训营5 B 比武招亲(上)相关推荐
- 2021牛客寒假算法基础集训营5 B.比武招亲(上)
2021牛客寒假算法基础集训营5 B.比武招亲(上) 题目链接 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐在榜上留下了这样一道问题,谁做出来了就可以 ...
- 2021牛客寒假算法基础集训营5 B. 比武招亲(上)
链接 https://ac.nowcoder.com/acm/contest/9985/B 题意 给定 n , m n,m n,m,定义一种序列,构造方法如下: 在 [ 1 , n ] [1,n] [ ...
- 【组合数+隔板法】2021牛客寒假算法基础集训营5 B 比武招亲(上)
组合数+隔板法 比武招亲(上) 题目大意 解题思路 枚举差值 d d d. 难点在于用 x x x 个数字,构造一个单调不减的序列,序列元素个数为 m − 2 m-2 m−2. 理解一 运用隔板法,把 ...
- 2021牛客寒假算法基础集训营5 B 比武招亲(上)
链接 https://ac.nowcoder.com/acm/contest/9985/B 思路 打表,得出一个7X7的表,根据行(m相同的情况下)找规律 第一行差分数列可以写成组合数形式C(n, 3 ...
- 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱
今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...
- 【解题报告】2021牛客寒假算法基础集训营4
[解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...
- 2021牛客寒假算法基础集训营1
2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...
- 2021牛客寒假算法基础集训营2 D.牛牛与整除分块
2021牛客寒假算法基础集训营2 D.牛牛与整除分块 题目链接 题目描述 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演 ...
- 2021牛客寒假算法基础集训营4
九峰与签到题 链接:https://ac.nowcoder.com/acm/contest/9984/A 来源:牛客网 题目描述 九峰正在准备一场毒瘤比赛,他是如此毒瘤以致于他想方设法降低通过率,他认 ...
最新文章
- Spring Bean四种注入方式(Springboot环境)
- 全球首例猪心移植人体手术:57岁晚期心脏病患者术后状况良好
- My first syscall
- java的classpath是什么_JAVA初学者classpath设置情况是什么?
- java回调如何理解_如何理解java中的回调
- python可视化界面编程 pycharm_pycharm开发一个简单界面和通用mvc模板(操作方法图解)...
- pythonxml模块高级用法_Python利用ElementTree模块处理XML的方法详解
- 【详谈 Delta Lake 】系列技术专题 之 Streaming(流式计算)
- html5支持哪媒体,html5 支持哪些媒体元素
- java 建表 框架_【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作...
- C语言:存储类型,内存管理
- 项目管理中的配置管理
- debian linux上usb摄像头,[Debian] 安装USB摄像头(芯片ZC0301)驱动
- 解决连接远程服务器MySQL“ACCESS DENIED FOR USER‘ROOT‘@‘IP地址‘“问题
- C#:定义一抽象类Pet(宠物)类,作为基类
- 什么是计算机软件 软件定义,软件定义_软件定义教程_软件定义视频教程 _课课家...
- 中学课程辅导杂志中学课程辅导杂志社中学课程辅导编辑部2022年第34期目录
- java连接电信iot平台,物联网基础:BC28连接电信IOT平台进行数据传输
- 中国微粉化蜡行业市场供需与战略研究报告
- 最新经营级秀出打赏系统源码+带支付/视频教程
热门文章
- python上安装reuquest_八爪鱼增值API文档
- OpenStack 安装与使用过程中排错总结
- js实现返回上一页后刷新历史页面
- 异常:java.sql.SQLException: 无效的列类型: 1111
- html转换成pdf后乱码,解决html导出pdf中文乱码问题的正确姿式
- 【WebRtc0419项目经验总结】
- stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)
- springboot~uaa~scope对实体的字段添加限制
- 双击桌面上的计算机图标 不属于计算机,在Windows中“计算机”图标()。
- python对室内设计师有什么用_什么时候会用到python装饰器