【玲珑杯 1049】【卡特兰数+(lucas定理+预处理)】Deg-route【求从 (0,0)到 (n,n)不穿过对角线 x = y 的方法数】
来源:互联网 发布:那个新闻软件最好 编辑:程序博客网 时间:2024/06/06 13:58
传送门:http://www.ifrog.cc/acm/problem/1049
题意:求从 (0,0)到 (n,n)不穿过对角线 x = y 的方法数
思路:
在一个格点阵列中,从 (0,0) 点走到 (n,m) 点且不经过对角线 x = y 的方法数 (x > y): C(n + m−1,m)−C(n + m−1,m−1)。
在一个格点阵列中,从 (0,0) 点走到 (n,m) 点且不穿过对角线 x = y 的方法数 (x ≥ y): C(n + m,m)−C(n + m,m−1)。
代码:
#include <iostream>#include <stdio.h> #include <algorithm>#include <string.h>using namespace std;#define ll long longtemplate<class T> void read(T&num) { char CH; bool F=false; for(CH=getchar();CH<'0'||CH>'9';F= CH=='-',CH=getchar()); for(num=0;CH>='0'&&CH<='9';num=num*10+CH-'0',CH=getchar()); F && (num=-num);}const int mod=1e4+7;ll fac[mod],inv[mod];void Pretreatment(){//预处理 int i; for(fac[0]=1,i=1;i<mod;i++) fac[i]=fac[i-1]*i%mod; for(inv[1]=1,i=2;i<mod;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod; //逆元打表公式 for(inv[0]=1,i=1;i<mod;i++) //用到的逆元很多,最好先打表 (inv[i]*=inv[i-1])%=mod; //前缀逆元积}ll C(int n,int m){ if(n<m) return 0; if(n<mod && m<mod) return fac[n] * inv[m] % mod * inv[n-m] % mod ; return C(n/mod,m/mod) * C(n%mod,m%mod) % mod ;}int main(){ int T; read(T); Pretreatment(); while(T--){ int x, y; read(x), read(y); ll ans = (C(x+y, y) + mod - C(x+y, y-1)) % mod; //记得加mod不然可能为负数 printf("%lld\n", ans); } return 0;}描述:
Time Limit:1s Memory Limit:64MByte
Submissions:316Solved:78
You are in a integer coordinate system xoyxoy, standing at point (0,0)(0,0).
A Deg-route from (0,0)(0,0) to (x,y)(x≥y)(x,y)(x≥y) is that you can just walk from one point to another point in up direction or right direction for just one unit length. You can just via point(i,j),(i≥j)(i,j),(i≥j).It means you must walk below the line y=xy=x inclusively.
How many different Deg-route from (0,0)(0,0) to (x,y)(x,y)?
The answer is too big, so mod 104+7104+7.
- 【玲珑杯 1049】【卡特兰数+(lucas定理+预处理)】Deg-route【求从 (0,0)到 (n,n)不穿过对角线 x = y 的方法数】
- 卡特兰数应用--n个元素的出栈顺序与从(0,0)到(n,n)不穿过对角线的方法数
- [ifrog 1049 - Deg-route] 卡特兰数 + Lucas组合数
- [ACM] HDU 3398 String (从坐标0,0走到m,n且不能与y=x-1相交的方法数,整数唯一分解定理)
- 51nod1120 卡特兰数+Lucas定理
- 快速求第n位卡特兰数模板
- n对括号的匹配方式(卡特兰数)
- hdu 1131 Count the Trees(n!*卡特兰数)
- 51nod 1120 机器人走方格 V3(卡特兰数,lucas定理)
- 计算函数F(X)=X*X+1, X从0到所输入数n的函数值之和
- 出一列数共N个将其从1到N编号进行M次查询[X, Y](X<
- n个不同数所有可能的出栈顺序及其引出的卡特兰数(catalan)
- 杭电2841 容斥定理求1到n之间和x互质的数的总数
- 从0到N(50000)的N个数字,抽掉其中两个数
- 卡特兰数-N个结点二叉树个数
- 卡特兰数------2行n列排队问题
- 从0到n-1中随机等概率输出m个不重复的数
- 从0到n-1中随机等概率输出m个不重复的数
- 在Zend Studio中为ThinkPHP添加代码自动提示功能
- PHP文件路径解析
- 51nod 1455 宝石猎人
- HiKey&96board的Android Source编译和下载 错误详解
- 苏嵌7 16.11.5
- 【玲珑杯 1049】【卡特兰数+(lucas定理+预处理)】Deg-route【求从 (0,0)到 (n,n)不穿过对角线 x = y 的方法数】
- Hive 中自定义UDF函数
- 欢迎使用CSDN-markdown编辑器
- Apache安装后的打开问题
- Swift初体验
- 机器学习第一课
- 20. Valid Parentheses
- 介绍一下google推荐的Android图片加载框架——Glide
- 三层