题目

天上的繁星一闪一闪的,甚是好看。你和你的小伙伴们一起坐在草地上,欣赏这美丽的夜景。

我们假定天上有\(n\)颗星星,它们排成一排,从左往右以此编号为1到\(n\),但是天上的星星实在太多了,你和你的小伙伴

们只能看到其中的\(k\)个星星,所以需要你在这\(n\)颗星星中选出\(k\)颗来进行观测,但是你的小伙伴给你提出了一个要求,

这\(k\)颗星星中,至少存在\(r\)颗星星是连续的,连续是指这些星星的编号连续。


分析

考虑答案可以容斥实现,也就是

\[\large\sum_{i=1}^{\lfloor\frac{k}{r}\rfloor}(-1)^{i-1}\times C(n-k+1,i)\times C(n-ir,k-ir)
\]

实质的过程就是在\(n-k+1\)个位置中选择\(i\)个位置插入长度至少为\(r\)的星星,

然后再在\(n-ir\)颗星星中选出\(k-ir\)颗星星,这样恰好选出\(k\)颗星星


代码

#include <cstdio>
#define rr register
using namespace std;
const int mod=1000000007,N=10000011;
int n,m,G,inv[N],fac[N],ans;
inline signed mo(int x,int y){return x+y>=mod?x+y-mod:x+y;}
inline signed C(int n,int m){return 1ll*fac[n]*inv[m]%mod*inv[n-m]%mod;}
signed main(){
fac[0]=fac[1]=inv[0]=inv[1]=1,scanf("%d%d%d",&n,&m,&G);
for (rr int i=2;i<=n;++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
for (rr int i=2;i<=n;++i) fac[i]=1ll*fac[i-1]*i%mod,inv[i]=1ll*inv[i-1]*inv[i]%mod;
for (rr int i=1;i<=m/G;++i)
ans=mo(ans,1ll*((i&1)?1:(mod-1))*C(n-m+1,i)%mod*C(n-i*G,m-i*G)%mod);
return !printf("%d",ans);
}

#组合计数,容斥定理#U136346 数星星的更多相关文章

  1. [CTS2019]珍珠(NTT+生成函数+组合计数+容斥)

    这题72分做法挺显然的(也是我VP的分): 对于n,D<=5000的数据,可以记录f[i][j]表示到第i次随机有j个数字未匹配的方案,直接O(nD)的DP转移即可. 对于D<=300的数 ...

  2. BZOJ2839 : 集合计数 (广义容斥定理)

    题目 一个有 \(N\) 个 元素的集合有 \(2^N\) 个不同子集(包含空集), 现在要在这 \(2^N\) 个集合中取出若干集合(至少一个), 使得它们的交集的元素个数为 \(K\) ,求取法的 ...

  3. 51nod1284容斥定理

    1284 2 3 5 7的倍数 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题   给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数. 例如N = 10, ...

  4. 2 3 5 7的倍数 (51Nod - 1284)[容斥定理]

    20180604 给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数. 例如N = 10,只有1不是2 3 5 7的倍数. Input 输入1个数N(1 <= N <= 10^1 ...

  5. 题解报告:hdu 4135 Co-prime(容斥定理入门)

    Problem Description Given a number N, you are asked to count the number of integers between A and B ...

  6. HDU1796 How many integers can you find【容斥定理】

    题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=1796 题目大意: 给你一个整数N.和M个整数的集合{A1.A2.-.Am}.集合内元素为非负数(包 ...

  7. Codeforces Round #330 (Div. 2) B. Pasha and Phone 容斥定理

    B. Pasha and Phone Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/595/pr ...

  8. hdu_5213_Lucky(莫队算法+容斥定理)

    题目连接:hdu_5213_Lucky 题意:给你n个数,一个K,m个询问,每个询问有l1,r1,l2,r2两个区间,让你选取两个数x,y,x,y的位置为xi,yi,满足l1<=xi<=r ...

  9. How Many Sets I(容斥定理)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3556 How Many Sets I Time Limit: 2 ...

  10. HDU - 4135 Co-prime 容斥定理

    题意:给定区间和n,求区间中与n互素的数的个数, . 思路:利用容斥定理求得先求得区间与n互素的数的个数,设表示区间中与n互素的数的个数, 那么区间中与n互素的数的个数等于.详细分析见求指定区间内与n ...

随机推荐

  1. Taurus.MVC WebMVC 入门开发教程2:一个简单的页面呈现

    前言: 在上一篇中,我们了解了如何下载.配置和运行 Taurus.MVC WebMVC 框架. 现在,让我们开始编写一个简单的页面并进行呈现. 步骤1:创建控制器 首先,我们需要创建一个控制器来处理页 ...

  2. Hi3516开发笔记(八):Hi3516虚拟机交叉开发环境搭建之配置QtCreator开发交叉编译环境

    海思开发专栏 上一篇:<Hi3516开发笔记(七):Hi3516虚拟机交叉开发环境搭建之交叉编译Qt>下一篇:<Hi3516开发笔记(九):在QtCreator开发环境中引入海思sd ...

  3. 在Directory.Build.props中用全局变量来管理包的版本号

    1.顶级目录下放置Directory.Build.props文件 为每个软件产品,分配一块独立的windows盘符,在根目录下放置名为Directory.Build.props的文件即可.这个文件名是 ...

  4. 通过Glide加载不可见的图片

    今天遇到一个需求,需要点击分享的时候生成图片以及二维码. 即:将带有图片以及二维码的布局文件生成Bitmap,当然这个布局文件是后台生成的,并不可见,这时候会发现使用Glide加载图片没有反应. 源码 ...

  5. Jmeter 之常数吞吐量作用

    一   添加方法: 线程组右键->添加->定时器-> 常数吞吐量定时器 二 作用: 常数吞吐量定时器的作用: 设置最大的吞吐量不超过设置的值 注意:如果线程能发送的请求远远低于设置的 ...

  6. Java 包装类的使用(自动装箱+自动拆箱)+Vector

    1 package com.bytezreo.ut; 2 3 import java.util.Scanner; 4 import java.util.Vector; 5 6 /** 7 * 8 * ...

  7. Java 理解“万事万物皆对象”+ 匿名对象的使用

    1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...

  8. nginx 代理 sftp转发流量

    首先需要nginx安装有 stream模块,使用 nginx -V 查看下是否有 --with-stream,没有使用命令: yum -y install nginx-all-modules.noar ...

  9. 【规范】看看人家Git提交描述,那叫一个规矩

    前言 缘由 没想到玩了多年git,竟然还有提交描述规范 事情起因: 在工作迭代过程中,偶然发现同组小帅哥Git提交描述总是和自己的不大一样,秉承好奇至上的我特意去研究了下.竟然发现提交了这么多年的Gi ...

  10. aardio 背景透明的3种方式(透明窗体1 webview2,透明窗体2-win-region-bitmap,透明窗体3-winform-transparent-color)

    aardio 背景透明的3种方式(透明窗体1 webview2,透明窗体2-win-region-bitmap,透明窗体3-winform-transparent-color) 3种透明窗体,主要分成 ...