题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794

题意概述:
  给出一个N*M的网格。网格上有一些点是障碍,不能经过。行走的方式是向右下角跳马步。求有多少种方案可以从(1,1)走到(N,M)。
  多组数据,组数不超过25。N,M<=1e18。

分析:

  还是水题。。。(我写这个的原因只是因为我第一次用lucas)分析一下可以发现横跳和纵跳各自的步数是确定的,所以变成了一个组合数问题。

  当有障碍的时候按照第一次碰到的障碍分类,先把棋盘当成完全没有障碍,然后扣掉这些方案即可。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<cctype>
using namespace std;
const int mo=;
typedef long long LL; LL N,M,R;
int inv[mo],J[mo],Ji[mo];
struct XY{
LL x,y;
friend bool operator < (XY a,XY b){
return a.x<b.x||a.x==b.x&&a.y<b.y;
}
friend bool operator == (XY a,XY b){
return a.x==b.x&&a.y==b.y;
}
}p[];
int f[]; int Lucas(LL x,LL y)
{
if(x<y) return ;
if(x<mo&&y<mo) return 1ll*J[x]*Ji[x-y]%mo*Ji[y]%mo;
return 1ll*Lucas(x/mo,y/mo)*Lucas(x%mo,y%mo)%mo;
}
void ready()
{
inv[]=;
for(int i=;i<mo;i++)
inv[i]=1ll*inv[mo%i]*(mo-mo/i)%mo;
J[]=,Ji[]=;
for(int i=;i<mo;i++){
J[i]=1ll*J[i-]*i%mo;
Ji[i]=1ll*Ji[i-]*inv[i]%mo;
}
}
int solve(LL n,LL m)
{
if((*n-m-)<||(*n-m-)%||(*m-n-)<||(*m-n-)%) return ;
LL a=(*m-n-)/,b=(*n-m-)/;
return Lucas(a+b,b);
}
int main()
{
ready();
int T=;
while(cin>>N>>M>>R){
int ans=solve(N,M);
if(R){
for(int i=;i<=R;i++)
cin>>p[i].x>>p[i].y;
sort(p+,p+R+);
R=unique(p+,p+R+)-p-;
memset(f,,sizeof(f));
for(int i=;i<=R;i++){
f[i]=solve(p[i].x,p[i].y);
for(int j=;j<i;j++)if(p[j].x<p[i].x&&p[j].y<p[i].y)
f[i]=(f[i]-1ll*f[j]*solve(p[i].x-p[j].x+,p[i].y-p[j].y+)%mo+mo)%mo;
}
for(int i=;i<=R;i++)
ans=(ans-1ll*f[i]*solve(N-p[i].x+,M-p[i].y+)%mo+mo)%mo;
}
cout<<"Case #"<<++T<<": "<<ans<<'\n';
}
return ;
}

HDU 5794 A Simple Chess Lucas定理+dp的更多相关文章

  1. HDU 5794 A Simple Chess (Lucas + dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794 多校这题转化一下模型跟cf560E基本一样,可以先做cf上的这个题. 题目让你求一个棋子开始在( ...

  2. HDU 5794 - A Simple Chess

    HDU 5794 - A Simple Chess题意: 马(象棋)初始位置在(1,1), 现在要走到(n,m), 问有几种走法 棋盘上有r个障碍物, 该位置不能走, 并规定只能走右下方 数据范围: ...

  3. HDU 5794 A Simple Chess dp+Lucas

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 A Simple Chess Time Limit: 2000/1000 MS (Java/O ...

  4. HDU 5794 A Simple Chess (容斥+DP+Lucas)

    A Simple Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 Description There is a n×m board ...

  5. HDU 5794 A Simple Chess(杨辉三角+容斥原理+Lucas定理)

    题目链接 A Simple Chess 打表发现这其实是一个杨辉三角…… 然后发现很多格子上方案数都是0 对于那写可能可以到达的点(先不考虑障碍点),我们先叫做有效的点 对于那些障碍,如果不在有效点上 ...

  6. HDU 5794 A Simple Chess ——(Lucas + 容斥)

    网上找了很多人的博客,都看不太懂,还是大力学长的方法好. 要说明的一点是,因为是比较大的数字的组合数再加上mod比较小,因此用Lucas定理求组合数. 代码如下(有注释): #include < ...

  7. hdu_5794_A Simple Chess(lucas+dp)

    题目链接:hdu_5794_A Simple Chess 题意: 给你n,m,从(1,1)到(n,m),每次只能从左上到右下走日字路线,有k(<=100)的不能走的位置,问你有多少方案 题解: ...

  8. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  9. HDU 5446 Unknown Treasure(Lucas定理+CRT)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5446 [题目大意] 给出一个合数M的每一个质因子,同时给出n,m,求C(n,m)%M. [题解] ...

随机推荐

  1. data-ng-show 指令

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  2. 极光推送小结 - iOS

    此次即友盟分享小结(友盟分享小结 - iOS)之后对推送也进行了一版优化.此次分享内容依然基于已经成功集成 SDK 后 code 层级部分. 注:此次分享基于 SDK 3.1.0,若版本相差较大,仅供 ...

  3. Web前端几种常见的实现水平垂直居中的方法

    第一种: 父容器不设置宽度,用定位实现水平垂直居中. <!DOCTYPE html> <html lang="en"> <head> <m ...

  4. c c++面试----c工程开发之链接

    多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面.例如:头文件的作用.头文件的内容:链接的作用和意 ...

  5. ABAP术语-Lock Mode

    Lock Mode 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/29/1085732.html Status that determine ...

  6. 解决ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)【亲测有效】

    文件转自:https://blog.csdn.net/hua1011161696/article/details/80666025 问题:(MySQL 5.6社区版windows版) 忘记密码或其他一 ...

  7. Co. - Microsoft - Windows - 通过任务计划,备份本地MySQL,数据上传Linux备份服务器

    需求 客户为Windows系统,安装MySQL,需要每日备份数据库到指定目录,并且上传到公司的备份服务器(Linux). 1.使用mysqldump备份MySQL数据库,使用FTP上传到阿里云Linu ...

  8. 【tp5.1】微信公众号授权登录及获取信息录入数据库

    微信公众号开发文档链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 微信公众号授权登录分为两种: 1.以 ...

  9. ECSHOP和SHOPEX快递单号查询百世快递插件V8.6专版

    发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...

  10. STM32F4使用FPU+DSP库进行FFT运算的测试过程二

    原文地址:http://www.cnblogs.com/NickQ/p/8541156.html 测试环境:单片机:STM32F407ZGT6 IDE:Keil5.20.0.0 固件库版本:STM32 ...