3907: 网格

Time Limit: 1 Sec  Memory Limit: 256 MB
Submit: 402  Solved: 180
[Submit][Status][Discuss]

Description

某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m。现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过图示中直线左上方的点,即任何途径的点(x, y)都要满足x >= y,请问在这些前提下,到达B(n, m)有多少种走法。

Input

输入文件中仅有一行,包含两个整数n和m,表示城市街区的规模。

Output

输出文件中仅有一个整数和一个换行/回车符,表示不同的方案总数。

100%的数据中,1 <= m <= n <= 5 000

你们出题人有意思吗,变式套上高精度又一道题.....
问题在于我这个傻叉横纵坐标竟然搞混了
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=1e4+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,m;
bool notp[N];
int p[N],lp[N];
void sieve(int n){
for(int i=;i<=n;i++){
if(!notp[i]) p[++p[]]=i,lp[i]=p[];
for(int j=;j<=p[]&&i*p[j]<=n;j++){
notp[i*p[j]]=;
lp[i*p[j]]=j;
if(i%p[j]==) break;
}
}
}
struct Big{
int d[N],l;
Big():l(){memset(d,,sizeof(d));d[]=;}
int& operator[](int x){return d[x];}
}a,b;
void Mul(Big &a,int b){
int g=;
for(int i=;i<=a.l;i++){
g+=a[i]*b;
a[i]=g%;
g/=;
}
for(;g;g/=) a[++a.l]=g%;
}
void Minus(Big &a,Big &b){
for(int i=;i<=b.l;i++){
if(a[i]<b[i]) a[i]+=,a[i+]--;
a[i]-=b[i];
}
int p=b.l+;
while(a[p]<) a[p]+=,a[p+]--;
while(a[a.l]==) a.l--;
}
void Print(Big &a){
for(int i=a.l;i>=;i--) printf("%d",a[i]);
} int e[N];
inline void add(int x,int d){
while(x!=){
e[lp[x]]+=d;
x/=p[lp[x]];
}
}
void C(int n,int m,Big &ans){
memset(e,,sizeof(e));
for(int i=n;i>=n-m+;i--) add(i,);
for(int i=;i<=m;i++) add(i,-);
for(int j=;j<=p[];j++) for(;e[j];e[j]--) Mul(ans,p[j]);
}
int main(){
freopen("in","r",stdin);
n=read();m=read();
sieve(n+m);
C(n+m,n,a);
C(n+m,n+,b);
Minus(a,b);
Print(a);
}
 

BZOJ 3907: 网格 [Catalan数 高精度]的更多相关文章

  1. POJ 2084 Catalan数+高精度

    POJ 2084 /**************************************** * author : Grant Yuan * time : 2014/10/19 15:42 * ...

  2. HDU 1023 Catalan数+高精度

    链接:HDU 1023 /**************************************** * author : Grant Yuan * time : 2014/10/19 15:5 ...

  3. BZOJ 3907: 网格( 组合数 + 高精度 )

    (0,0)->(n,m)方案数为C(n,n+m), 然后减去不合法的方案. 作(n,m)关于y=x+1的对称点(m-1,n+1), 则(0,0)->(m-1,n+1)的任意一条路径都对应( ...

  4. BZOJ 3907: 网格

    Description 求不跨过直线 \(y=x\) ,到达 \((n,m)\) 的方案数. Sol 组合数学+高精度. 这个推导过程跟 \(Catalan\) 数是一样的. 答案就是 \(C^{n+ ...

  5. bzoj 3907: 网格 组合数学

    3907: 网格 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 13  Solved: 7[Submit][Status][Discuss] Descr ...

  6. bzoj 3907 网格 bzoj2822 [AHOI2012]树屋阶梯——卡特兰数(阶乘高精度模板)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3907 https://www.lydsy.com/JudgeOnline/problem.p ...

  7. BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]

    2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 779  Solved: 453[Submit][Status] ...

  8. BZOJ 3907: 网格【组合数学】

    Description 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m.现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过 ...

  9. 【BZOJ 3907】网格(Catalan数)

    题目链接 这个题推导公式跟\(Catalan\)数是一样的,可得解为\(C_{n+m}^n-C_{n+m}^{n+1}\) 然后套组合数公式\(C_n^m=\frac{n!}{m!(n-m)!}\) ...

随机推荐

  1. SQL Server 使用问题解答(持续更新中)

    问题一:sql server 2014不允许保存更改,您所做的更改要求删除并重新创建以下表 解答:工具-选项-不勾选组织保存要求重新创建表的更改,如下图确定.

  2. 番外篇--Moddule Zero介绍

    1.1 ABPZero - 概述 介绍 微软ASP.NET身份框架 权限 会话 角色管理 默认角色 用户管理 多租户 设置管理 审计日志 1.1.1 介绍 Modulde Zero实现了ASP.NET ...

  3. LNMP下FTP服务器的安装和使用(Pureftpd和Proftpd)

    FTP是网站文件维护中使用比较多的,目前LNMP一键安装包中有Pureftpd和Proftpd服务器安装脚本,LNMP默认不安装任何FTP服务器,需要用户自行安装(1.2开始不再提供proftpd的安 ...

  4. channelartlist|频道文档:

    http://help.dedecms.com/v53/archives/tag/global/channelartlist/ {/dede:channelartlist} 参数说明: typeid ...

  5. geotools实现多边形的合并&缓冲区

    这算是第一次接触开源工具包,说实话刚开始有点不知所措,中途遇到很多问题的时候也感觉头皮发麻,不过很高兴自己还是坚持下来了. geotools就不做过多的介绍了,想总结一下如何根据开源内容做自己的项目. ...

  6. Android-第三天

    今天开始做一个提交的页面,本来是用LinearLayout,但是这种布局要使用到多组LinearLayout,于是采用表格布局+相对布局的方式. <TableLayout> <Tab ...

  7. 滑稽的下午--angularjs 2.0管道的使用

    虽然angular 已经迎来4.0时代,可我还在苦逼的看2.0. 下午有个任务: 让一个component组件里的时间显示当前时间并自动刷新. 过程: 1.首先获取当前时间 new Date(); 2 ...

  8. Ajax常用实例

    摘录自:http://www.cnblogs.com/gaopeng527/p/4459622.html 1. 级联下拉列表 例1.1 级联下拉列表. (1)编写AjaxRequest.js文件,并将 ...

  9. 开源纯C#工控网关+组态软件(八)表达式编译器

    一.   引子 监控画面的主要功能之一就是跟踪下位机变量变化,并将这些变化展现为动画.大部分时候,界面上一个图元组件的某个状态,与单一变量Tag绑定,比如电机的运行态,绑定一个MotorRunning ...

  10. postgres的initdb解析——从一次插件升级失败说起

    我们公司基于postgres开发了一款数据库产品,不用说我们对OSS的源码做了改动,并且也集成和自己编写了一些插件.因此,当postgresql和相关插件升级时,我们也需要将升级反应到自己的产品中去, ...