ABC156E
题目链接
也是简单的组合数学问题,每个位置可以移动走,也可以移动来,那么我们就需要找最终的状态,也就是最终的0的个数
假设有m个0,就有n-m个非0空位,选择0的组合数为\(\textrm{C}_{n}^{m}\),这m个位置转移到n-m个位置的组合数为\(\textrm{D}_{n-m}^{m}\),意思是从n-m个非0的部分选m个来接受这些转移来的,转换成组合数公式有:\(\textrm{D}_{n-m}^{m}\) = \(\textrm{C}_{n-1}^{n-m-1}\),也就是说,x个中选y个,可以重复的组合数为\(\textrm{C}_{x+y-1}^{x-1}\)
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) ((x)&(-x))
typedef long long LL;
const int maxn = 2e5+5;
const LL MOD = 1e9+7;
LL F[maxn], Finv[maxn], inv[maxn];
void prework() {
inv[1] = 1;
for(int i = 2; i < maxn; ++i) {
inv[i] = (MOD - MOD / i) * 1LL * inv[MOD % i] % MOD;
}
F[0] = Finv[0] = 1;
for(int i = 1; i < maxn; ++i) {
F[i] = F[i-1] * 1LL * i % MOD;
Finv[i] = Finv[i-1] * 1LL * inv[i] % MOD;
}
}
LL comb(int n, int m) { //C(n, m)
if(n < m || m < 0) return 0;
return F[n] * 1LL * Finv[n-m] % MOD * Finv[m] % MOD;
}
void run_case() {
prework();
LL n, k, ans = 0;
cin >> n >> k;
for(int i = 0; i < n; ++i) {
if(i > k) break;
ans = (ans + comb(n, i) * comb(n-1, n-i-1)%MOD + MOD) % MOD;
}
cout << ans;
}
int main() {
ios::sync_with_stdio(false), cin.tie(0);
cout.flags(ios::fixed);cout.precision(10);
run_case();
cout.flush();
return 0;
}
ABC156E的更多相关文章
随机推荐
- 大数据-redis
redis 分布式缓存数据库 单节点安装 tar -zxvf redis-3.2.9.tar.gz cd /opt/sxt/redis-3.2.9 yum -y install gcc tcl (依赖 ...
- CRC碰撞
循环冗余效验(Cyclic Redundancy Check, CRC) 是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误. ...
- L2-1 分而治之
思路 这题的意思是,如果把这些点打掉,其他的点是否能够完全不连通. 用并查集,或者打上标记之后,判断每个点是否还能到达其他点,如果一个点可以到达其他任何点,都应该输出否. 代码 #include &l ...
- 图的bfs遍历模板(邻接矩阵存储和邻接表存储)
bfs遍历图模板伪代码: bfs(u){ //遍历u所在的连通块 queue q; //将u入队 inq[u] = true; while (q非空){ //取出q的队首元素u进行访问 for (从u ...
- scrapy 框架基本使用
scrapy简介: Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 ...
- 使用git pull同步github代码到服务器
我直接用git pull的时候遇到这个错误: error: Your local changes to the following files would be overwritten by merg ...
- PMP概略学习上--基本思想和概念
1 前言 花了10天左右的时间,对PMP(Project Management Professional,项目管理专业人士)考试认证做了一个概略学习.此次学习的目的是整体了解项目管理知识,并不是以考试 ...
- Vue - 动态组件 & 异步组件
动态组件 <div id="app"> <components :is="com[2]"></components> < ...
- truffle编译合约常见问题及其在私链上的部署与交互
一.初始化truffle项目 truffle init //初始化truffle项目文件夹 将写好的合约文件放到contract文件夹中 truffle compile //编译合约 (注意!! ...
- opencv:图像轮廓计算
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...