给出n,m,k,求1~n中前m个正好有k个在原来位置的种数(i在第i个位置)

做法:容斥,先选出k个放到原来位置,然后剩下m-k个不能放到原来位置的,用0个放到原来位置的,有C(m-k,0)*(n-k)!种 - 1个放原来位置的,有C(m-k,1)*(n-k-1)!种+...-...

 #include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e3+;
const int INF=0x3f3f3f3f;
const int mod=1e9+;
int cas=,T;
int n,m,k,c[N][N];
LL fac[N];
void init()
{
memset(c,,sizeof(c));
c[][]=fac[]=;
for(int i=;i<N;i++)
{
fac[i]=fac[i-]*i%mod;
c[i][]=;
for(int j=;j<=i;j++) c[i][j]=(c[i-][j]+c[i-][j-])%mod;
}
//for(int i=0;i<100;i++)
//{
//for(int j=0;j<=i;j++) printf("%d ",c[i][j]);
//printf("\n");
//}
}
int main()
{
//freopen("1.in","w",stdout);
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
init();
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&k);
LL ans=;
for(int i=;i<=m-k;i++)
{
if(i&) ans-=c[m-k][i]*fac[n-k-i]%mod;
else ans+=c[m-k][i]*fac[n-k-i]%mod;
ans%=mod;
//printf("%lld\n",ans);
}
ans=ans*c[m][k]%mod;
printf("Case %d: %lld\n",cas++,(ans+mod)%mod);
}
//printf("time=%.3lf\n",(double)clock()/CLOCKS_PER_SEC);
return ;
}

LightOJ 1095 Arrange the Numbers-容斥的更多相关文章

  1. Light OJ 1095 Arrange the Numbers(容斥)

    给定n,m,k,要求在n的全排列中,前m个数字中恰好有k个位置不变,有几种方案?首先,前m个中k个不变,那就是C(m,k),然后利用容斥原理可得 ans=ΣC(m,k)*(-1)^i*C(m-k,i) ...

  2. lightoj 1095 - Arrange the Numbers(dp+组合数)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1095 题解:其实是一道简单的组合数只要推导一下错排就行了.在这里就推导一下错排 ...

  3. LightOJ - 1095 - Arrange the Numbers(错排)

    链接: https://vjudge.net/problem/LightOJ-1095 题意: Consider this sequence {1, 2, 3 ... N}, as an initia ...

  4. light oj 1095 - Arrange the Numbers排列组合(错排列)

    1095 - Arrange the Numbers Consider this sequence {1, 2, 3 ... N}, as an initial sequence of first N ...

  5. Codeforces.449D.Jzzhu and Numbers(容斥 高维前缀和)

    题目链接 \(Description\) 给定\(n\)个正整数\(a_i\).求有多少个子序列\(a_{i_1},a_{i_2},...,a_{i_k}\),满足\(a_{i_1},a_{i_2}, ...

  6. Light oj 1095 - Arrange the Numbers (组合数学+递推)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1095 题意: 给你包含1~n的排列,初始位置1,2,3...,n,问你刚好固定 ...

  7. Jzzhu and Numbers CodeForces - 449D (高维前缀和,容斥)

    大意: 给定集合a, 求a的按位与和等于0的非空子集数. 首先由容斥可以得到 $ans = \sum \limits_{0\le x <2^{20}} (-1)^{\alpha} f_x$, 其 ...

  8. LightOJ 1161 - Extreme GCD 容斥

    题意:给你n个数[4,10000],问在其中任意选四个其GCD值为1的情况有几种. 思路:GCD为1的情况很简单 即各个数没有相同的质因数,所以求所有出现过的质因数次数再容斥一下-- 很可惜是错的,因 ...

  9. cf#305 Mike and Foam(容斥)

    C. Mike and Foam time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

随机推荐

  1. jsp传值乱码解决办法

    在jsp中,我们经常从数据库读取数据返回客户端,但我们常常在制作时出现乱码现象,所以我们可以用<%request.setCharacterEncoding("UTF-8"); ...

  2. Android 中单位讲解

    1. dip(dp): device independent pixels(设备独立像素). dp也就是dip.这个和sp基本类似.如果设置表示长度.高度等属性时可以使用dp 或sp.但如果设置字体, ...

  3. sharepoint 使用命令行注册dll文件到gac的方法

    使用命令行注册dll文件到gac的方法: gacutil.exe -i D:\SPFormLoginProject.dll 删除gac的dll方法: gacutil /u "SPFormLo ...

  4. [置顶] 关于UBUNTU 12.04, 在THINKPAD E430C上WIFI连接不上的问题

    今天,把自己的本本给格式化了,化分成两个大块,在一切都搞定了后,出现了一个问题,即WIFI连接不上,但可以搜索到WIFI的网络,开始以为自己手贱,是不是密码输入了,试了N多次,发现偶错了,不是手贱,看 ...

  5. HTML meta viewport属性

    什么是Viewport 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机 ...

  6. 搭建PHP建站环境

    PHP是一种网站后端脚本语言,通常在web开发中使用apache+PHP+MYSQL这种黄金搭档来建立支持PHP的站点,PHP运行环境或者说任何技术的运行环境都不是简单的加法,即使是安装有apache ...

  7. [ios]iphone 获取UIWebView内Html方法

    原文:http://blog.csdn.net/diyagoanyhacker/article/details/6564897 获取所有html:NSString *lJs = @"docu ...

  8. c++内存对齐 转载

    转载自http://blog.csdn.net/chengonghao/article/details/51674166 例子举的特别好 很多文章大概都有像这样的结论: 1. 数据项只能存储在地址是数 ...

  9. 用C++实现的八皇后问题

    我是一个C++初学者,控制台实现了一个八皇后问题. 代码如下: //"八皇后问题"V1.0 //李国良于2017年1月11日编写完成 #include <iostream&g ...

  10. 捕获input 文本框内容改变的事件(onchange,onblur,onPropertyChange比较)

    input 文本框内容改变,可以使用onchange或者onblur来判断,但onchange是在文本内容改变,然后失去焦点的时发生,onblur是在失去焦点时发生,不会自己去判断. 如: <i ...