hdu_5794_A Simple Chess(lucas+dp)
题意:
给你n,m,从(1,1)到(n,m),每次只能从左上到右下走日字路线,有k(<=100)的不能走的位置,问你有多少方案
题解:
画图可看到路线是一个杨辉三角的图,然后我们可以将对应的x,y转换到对应的点上,也可以吧杨辉三角看成一个平行四边形,
我这里看成的平行四边形,设dp[i]为从起点到第i个障碍物的的方案数,那么dp[i]=dp[i]-sum(dp[j](第j个点能走到i这个点)*(j到i的方案数))。
然后我们把终点放到最后,最后求出的dp[end]就是答案
#include<cstdio>
#include<algorithm>
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const ll P=;
ll f[P+],r[P+];
ll C(ll n,ll m){return n<m?:f[n]*r[n-m]%P*r[m]%P;}
ll lucas(ll n,ll m){
if(n<m||m<)return ;
if(!m||n==m)return ;
return C(n%P,m%P)*lucas(n/P,m/P)%P;
}
void init(){
int i;
for(r[]=r[]=f[]=f[]=,i=;i<P;i++){
f[i]=f[i-]*i%P,r[i]=-r[P%i]*(P/i)%P;
while(r[i]<)r[i]+=P;
}
for(i=;i<P;i++)r[i]=r[i]*r[i-]%P;
} ll n,m,k,ic=,dp[]; struct point{
ll x,y;
bool operator<(const point &b)const{return x<b.x;}
}p[]; int main(){
init();
while(~scanf("%lld%lld%lld",&n,&m,&k))
{
n--,m--;
int fg=;
F(i,,k)
{
scanf("%lld%lld",&p[i].x,&p[i].y),p[i].x--,p[i].y--;
if(p[i].x==n&&p[i].y==m)fg=;
}
printf("Case #%lld: ",ic++);
if(n==&&m==)puts("");
else if((n+m)%!=||fg)puts("");
else
{
ll x,y,tx,ty;
sort(p+,p++k);
p[++k].x=n,p[k].y=m;
F(i,,k)
{
if((p[i].x+p[i].y)%==)
{
x=(p[i].x+p[i].y)/,y=min(p[i].x,p[i].y)-x;
dp[i]=lucas(x,y);
F(j,,i-)
{
if(p[j].y<p[i].y&&p[j].x<p[i].x)
{
ll xx=p[i].x-p[j].x,yy=p[i].y-p[j].y;
if((xx+yy)%==)
{
ll tx=(xx+yy)/,ty=min(xx,yy)-tx;
dp[i]-=(lucas(tx,ty)*dp[j])%P;
dp[i]=(dp[i]+P)%P;
}
}
}
}
}
printf("%lld\n",dp[k]);
}
}
return ;
}
hdu_5794_A Simple Chess(lucas+dp)的更多相关文章
- HDU 5794 A Simple Chess (Lucas + dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794 多校这题转化一下模型跟cf560E基本一样,可以先做cf上的这个题. 题目让你求一个棋子开始在( ...
- HDU 5794 A Simple Chess Lucas定理+dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794 题意概述: 给出一个N*M的网格.网格上有一些点是障碍,不能经过.行走的方式是向右下角跳马步.求 ...
- Codeforces Round #313 (Div. 2) E. Gerald and Giant Chess (Lucas + dp)
题目链接:http://codeforces.com/contest/560/problem/E 给你一个n*m的网格,有k个坏点,问你从(1,1)到(n,m)不经过坏点有多少条路径. 先把这些坏点排 ...
- A Simple Chess (Lucas组合数 + 容斥)
题意:走马步,要求向右向下,不能走进禁止的点.求方案数. 思路:若是n*m比较小的话,那么可以直接DP.但是这道题目不行.不过我们仔细分析可以知道从某个点到某个点是一个组合数,但是数据太大,mod值很 ...
- 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 ...
- hdu-5794 A Simple Chess(容斥+lucas+dp)
题目链接: A Simple Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- 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 ...
- hdu5794 A Simple Chess 容斥+Lucas 从(1,1)开始出发,每一步从(x1,y1)到达(x2,y2)满足(x2−x1)^2+(y2−y1)^2=5, x2>x1,y2>y1; 其实就是走日字。而且是往(n,m)方向走的日字。还有r个障碍物,障碍物不可以到达。求(1,1)到(n,m)的路径条数。
A Simple Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 5794 A Simple Chess(杨辉三角+容斥原理+Lucas定理)
题目链接 A Simple Chess 打表发现这其实是一个杨辉三角…… 然后发现很多格子上方案数都是0 对于那写可能可以到达的点(先不考虑障碍点),我们先叫做有效的点 对于那些障碍,如果不在有效点上 ...
随机推荐
- Pthon修炼5
函数 一.自定义函数 def:表示函数的关键字 函数名:函数的名称 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:执行完函数return 一个值 例:def count(x ...
- Linux修改SSH端口和禁止Root远程登陆
Linux修改ssh端口22 vi /etc/ssh/ssh_config vi /etc/ssh/sshd_config 然后修改为port 8888 以root身份service sshd res ...
- kafka_2.11-0.10.0.0安装步骤
Kafka安装配置 我们使用5台机器搭建Kafka集群: 1. cluster-1-namenode-1-001 172.16.0.147 2. cluster-1-datanode-1- ...
- 初始化一个本地GIT仓储
简单总结下 // 定位到仓储文件夹目录 $ cd /dir // 初始化本地仓储 $ git init ``` 添加本地GIT忽略清单文件.gitignore```// 添加OS X中系统文件.DS_ ...
- 利用LinkedList实现洗牌功能
分2步: 1.生成扑克牌. 2.洗牌. package com.dongbin.collection; import java.util.LinkedList; import java.util.Ra ...
- 本地Fiddler传递XML格式数据,调试微信功能。
一,调试关注和取消关注 User-Agent: Fiddler Host: localhost:4561Content-Type: application/json; charset=utf-8 Co ...
- HDU 1241Oil Deposits (DFS)
Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...
- nodejs url方法
ulrl方法 url.format(urlObj) //将对象装换成url url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) / ...
- 数学#素数判定Miller_Rabin+大数因数分解Pollard_rho算法 POJ 1811&2429
素数判定Miller_Rabin算法详解: http://blog.csdn.net/maxichu/article/details/45458569 大数因数分解Pollard_rho算法详解: h ...
- IIS7部署MVC站点后,打开无法正常跳转到首页
产品拿到安装包后想在本地安装测试一下,但是管理工具里没有IIS. 后来在windows功能里添加iis服务. 添加后成功安装. 但是第一次打开时,页面提示要“启用目录浏览”. 启用后,打开的却是站点目 ...