【容斥+组合数】Massage @2018acm徐州邀请赛 E
问题 E: Massage
时间限制: 1 Sec 内存限制: 64 MB
题目描述
The classroom is a table of size N × M. We'll consider the table rows numbered from top to bottom 1 through N, and the columns numbered from left to right 1 through M. Then we'll denote the cell in row x and column y as (x, y). And every cell sits a student.
Initially JSZKC sits on the cell (1, 1) . And his girl friend sits on cell (n, m). A message can go from cell (x, y) to one of two cells (x + 1, y) and (x, y + 1). JSZKC doesn’t want to trouble his classmates too much. So his classmates(not including his girl friend) may not take massages more than once. It’s obvious that he can only send out two massages. Please help JSZKC find the number of ways in which the two massages can go from cell (1, 1) to cell (n, m).
More formally, find the number of pairs of non-intersecting ways from cell (1, 1) to cell (n, m) modulo 1000000007 . Two ways are called non-intersecting if they have exactly two common points — the starting point and the final point.
输入
The first line of the input contains one integers N (2 ≤ N,M≤ 1000), giving the number of rows and columns in the classroom.
There are no more than 100 test cases.
输出
样例输入
2 2
2 3
3 3
样例输出
1
1
3
meaning
从(1,1)到(n,m)只能向(x+1,y)和(x,y+1)走,问有多少种方案走两条不相交的路。
solution
又是一道想到了就很水的题
要求走两条路且不相交,可以将起点看作A1(1,2)和A2(2,1),终点看作B1(n-1,m)和B2(n,m-1)。
设S(A,B)表示从A到B的方案数。(C(n+m-2,n-1),n,m为矩形长宽)
那么由容斥,ans = S(A1,B1)*S(A2,B2)-S(A1,B2)*S(A2,B1) (因为只要路径相交,从A1就可以到B2,从A2就可以到B1)
code
#define IN_LB() freopen("C:\\Users\\acm2018\\Desktop\\in.txt","r",stdin)
#define OUT_LB() freopen("C:\\Users\\acm2018\\Desktop\\out.txt","w",stdout)
#define IN_PC() freopen("C:\\Users\\hz\\Desktop\\in.txt","r",stdin)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 200005;
ll fac[maxn],MOD = 1e9+7;
void init() {
int i;
fac[0] =1;
for(i =1; i <= (int)2e5+10; i++) //modify
fac[i] = fac[i-1]*i % MOD;
}
ll fastpow(ll a, ll b) {
ll tmp = a % MOD, ans =1;
while(b) {
if(b &1)
ans = ans * tmp % MOD;
tmp = tmp*tmp % MOD;
b >>=1;
}
return ans;
}
ll comb(ll n, ll m) {
return m>n ? 0 : fac[n]*fastpow(fac[m]*fac[n-m], MOD-2) % MOD;
}
ll Lucas(ll n, ll m) {
return m ? (comb(n%MOD, m%MOD)*Lucas(n/MOD, m/MOD))%MOD : 1;
}
int main() {
// IN_LB();
init();
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
cout<<(Lucas(n+m-4,n-2)*Lucas(n+m-4,n-2)%MOD-Lucas(n+m-4,n-1)*Lucas(n+m-4,m-1)%MOD+MOD)%MOD<<endl;
}
return 0;
}
【容斥+组合数】Massage @2018acm徐州邀请赛 E的更多相关文章
- [AHOI2015 Junior] [Vijos P1943] 上学路上 【容斥+组合数】
题目链接:Vijos - P1943 题目分析 这是 AHOI 普及组的题目,然而我并不会做= =弱到不行= = 首先,从 (x, 0) 到 (0, y) 的最短路,一定是只能向左走和向上走,那么用组 ...
- [BZOJ 3129] [Sdoi2013] 方程 【容斥+组合数取模+中国剩余定理】
题目链接:BZOJ - 3129 题目分析 使用隔板法的思想,如果没有任何限制条件,那么方案数就是 C(m - 1, n - 1). 如果有一个限制条件是 xi >= Ai ,那么我们就可以将 ...
- 【BZOJ4665】小w的喜糖 容斥+组合数
[BZOJ4665]小w的喜糖 Description 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那 ...
- [BZOJ3027][Ceoi2004]Sweet 容斥+组合数
3027: [Ceoi2004]Sweet Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 135 Solved: 66[Submit][Status] ...
- 【倍增】T-shirt @2018acm徐州邀请赛 I
问题 I: T-shirt 时间限制: 1 Sec 内存限制: 64 MB 题目描述 JSZKC is going to spend his vacation! His vacation has N ...
- 【分治-前缀积后缀积】JS Window @2018acm徐州邀请赛G
问题 G: JS Window 时间限制: 2 Sec 内存限制: 512 MB 题目描述 JSZKC has an array A of N integers. More over, he has ...
- Codeforces 100548F - Color (组合数+容斥)
题目链接:http://codeforces.com/gym/100548/attachments 有n个物品 m种颜色,要求你只用k种颜色,且相邻物品的颜色不能相同,问你有多少种方案. 从m种颜色选 ...
- BZOJ5306 [HAOI2018]染色 【组合数 + 容斥 + NTT】
题目 为了报答小 C 的苹果, 小 G 打算送给热爱美术的小 C 一块画布, 这块画布可 以抽象为一个长度为 \(N\) 的序列, 每个位置都可以被染成 \(M\) 种颜色中的某一种. 然而小 C 只 ...
- 【BZOJ4710】[Jsoi2011]分特产 组合数+容斥
[BZOJ4710][Jsoi2011]分特产 Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同 ...
随机推荐
- 次小生成树(POJ1679/CDOJ1959)
POJ1679 首先求出最小生成树,记录权值之和为MinST.然后枚举添加边(u,v),加上后必形成一个环,找到环上非(u,v)边的权值最大的边,把它删除,计算当前生成树的权值之和,取所有枚举加边后生 ...
- sprintf补位
有的时候需要00001这样的字符串 来源却是Int的1 这个时候就可以用sprintf方法了 $i = 3; $a=sprintf("%08d", $i); echo $a; %0 ...
- kudu的读取数据流程
当客户端从Kudu的表中读取数据时,必须首先建立需要连接的系列tablet服务器. 通过执行tablet发现过程(如上所述)来确定包含要读取的主关键字范围的tablet的位置(读取不必在领导者tabl ...
- nginx限制单个IP的最大连接数量限制下载速度
今天seafile服务因为测试在下载文件的时候,带宽占用过大,导致seafile客户端无法登陆的问题. 我们公司的seafile是通过nginx代理的8000端口,因此我这边通过修改nginx配置来解 ...
- radio按钮单选效果
必须有name,并且是同一值,判断效果可用value值确定
- Service工作原理
--摘自<android插件化开发指南> 一.在新进程启动Service 第一步:APP向AMS发送一个启动Service的消息 通过AMN/AMP把要启动的Service信息发送给AMS ...
- Jenkins使用遇到的问题总结
学新技能最方便的就是在网上找教程了,我找到一个还不错的易百教程 Jenkins教程 别看教程写了一堆,其实真正用到的没多少.后面的自动化测试,服务器维护啥的,等用到的时候再深入研究吧 No1: 按照教 ...
- 使用Chrome浏览器设置XX-net的方法
以下介绍使用Chrome浏览器设置XX-net的方法 1.下载并安装谷歌浏览器. 2.打开https://github.com/XX-net/XX-Net/blob/master/code/d ...
- Stm32基础
Stm32基础 目录 常用功能函数 跑马灯实验 蜂鸣器实验 按键实验 端口复用与重映射 常用功能函数 初始化gpio函数 作用:初始化一个或者多个io口(同一组)的工作方式和速度该函数主要是操作GPI ...
- javascript宏任务和微任务
函数 // 你不能改变一个函数的 name 属性的值, 因为该属性是只读的 var object = { // someMethod 属性指向一个匿名函数 someMethod: function() ...