首先这个题需要dp.dp[i]=C(x[i]+y[i],x[i])-Σdp[j]*C(x[i]-x[j]+y[i]-y[j],x[i]-x[j])(x[i]>=x[j],y[i]>=y[j])。

然后就是喜闻乐见的lucas+CRT.

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define maxn 1000050
using namespace std;
],ans[],inv1[][maxn],inv2[][maxn],up,f[],a[];
struct pnt
{
    long long x,y;
}pt[];
bool cmp(pnt x,pnt y)
{
    if (x.y!=y.y) return x.y<y.y;
    return x.x<y.x;
}
long long f_pow(long long x,long long y,long long mod)
{
    ,base=x;
    while (y)
    {
        ) ans=(ans*base)%mod;
        base=(base*base)%mod;
        y>>=;
    }
    return ans;
}
void get_mod(long long type)
{
    up=type;
    )
    {
        p[]=;inv1[][]=;inv2[][]=;
        ;i<=p[]-;i++)
        {
            inv1[][i]=inv1[][i-]*i%p[];
            inv2[][i]=f_pow(inv1[][i],p[]-,p[]);
        }
    }
    else
    {
        p[]=;p[]=;p[]=;p[]=;
        ;i<=;i++)
        {
            inv1[i][]=;inv2[i][]=;
            ;j<=p[i]-;j++)
            {
                inv1[i][j]=inv1[i][j-]*j%p[i];
                inv2[i][j]=f_pow(inv1[i][j],p[i]-,p[i]);
            }
        }
    }
}
long long comb(long long n,long long m,long long p,long long type)
{
    ;
    return inv1[type][n]*inv2[type][m]%p*inv2[type][n-m]%p;
}
long long lucas(long long n,long long m,long long p,long long type)
{
    ;
    return comb(n%p,m%p,p,type)*lucas(n/p,m/p,p,type)%p;
}
long long CRT()
{
    ;
    ;i<=up*up;i++)
        ret=(ret+a[i]*(mod/p[i])%mod*f_pow(mod/p[i],p[i]-,p[i])%mod)%mod;
    return ret%mod;
}
long long get_C(long long n,long long m)
{
    ;i<=up*up;i++) a[i]=lucas(n,m,p[i],i);
    return CRT();
}
int main()
{
    scanf("%lld%lld%lld%lld",&n,&m,&t,&mod);
    ;i<=t;i++) scanf("%d%d",&pt[i].x,&pt[i].y);
    ) get_mod(););
    sort(pt+,pt+t+,cmp);t++;pt[t].x=n;pt[t].y=m;
    ;i<=t;i++)
    {
        f[i]=get_C(pt[i].x+pt[i].y,pt[i].x);
        ;j<=i-;j++)
        {
            if (pt[j].x<=pt[i].x && pt[j].y<=pt[i].y)
                f[i]=(f[i]-f[j]*get_C(pt[i].x-pt[j].x+pt[i].y-pt[j].y,pt[i].x-pt[j].x)%mod+mod)%mod;
        }
    }
    printf("%lld\n",(f[t]+mod)%mod);
    ;
}

BZOJ 3782 上学路线的更多相关文章

  1. BZOJ 3782: 上学路线 [Lucas定理 DP]

    3782: 上学路线 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 192  Solved: 75[Submit][Status][Discuss] ...

  2. BZOJ 1266 上学路线route(最小割)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1266 题意:给出一个无向图,每条边有长度和代价.求出1到n的最短路.之后删掉一些边使得1 ...

  3. BZOJ 1266 上学路线(最短路+最小割)

    给出n个点的无向图,每条边有两个属性,边权和代价. 第一问求1-n的最短路.第二问求用最小的代价删边使得最短路的距离变大. 对于第二问.显然该删除的是出现在最短路径上的边.如果我们将图用最短路跑一遍预 ...

  4. BZOJ 1266: [AHOI2006]上学路线route(最短路+最小割)

    第一问最短路.第二问,先把最短路的图建出来(边(u,v)满足d[s->u]+d[v->t]+d(u,v)==最短路径长度,就在图中,可以从源点和汇点分别跑一次最短路得到每个点到源点和汇点的 ...

  5. codevs2693 上学路线(施工)

    难度等级:黄金 2693 上学路线(施工) 题目描述 Description 问题描述 你所在的城市街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道. 南北方向a条街道从西到东依次编号为1到 ...

  6. BZOJ_1266_[AHOI2006]上学路线route_最小割

    BZOJ_1266_[AHOI2006]上学路线route_最小割 Description 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信 ...

  7. 【最短路+最大流】上学路线@安徽OI2006

    目录 [最短路+最大流]上学路线@安徽OI2006 PROBLEM SOLUTION CODE [最短路+最大流]上学路线@安徽OI2006 PROBLEM 洛谷P4300 SOLUTION 先在原图 ...

  8. BJWC2018上学路线

    题目描述 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路口.小B 喜欢走最短的 ...

  9. P4478 [BJWC2018]上学路线

    Description 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路口.小B ...

随机推荐

  1. RFS_注释

    1.  注释的操作如下:

  2. iPhone图标及启动画面大小 xcode5

    启动画面 文件名   大小px Default.png 320*480 Default@2x.png 640*960 Default-568h@2x.png 640*1136 图标 文件名  大小px ...

  3. 网站sqlserver提权操作

    在入侵过程中,得到SQLserver的权限,想进一步得到system权限的方法总结 *************************** 利用xp_cmdshell **************** ...

  4. VC编程技巧:IE控件的高级用法

    一.如何显示内存中的 HTML 网页 二.屏蔽 IE 控件的上下文菜单 三.扩展 HTML 脚本中的 external 对象 四.显示 HTML 样式的对话窗 五.执行 HTML 脚本 http:// ...

  5. Swipecards

    https://github.com/Diolor/Swipecards https://github.com/kikoso/Swipeable-Cards

  6. Balsamiq Mockups

    Balsamiq Mockups完全手册 2010.03.18 发布 48,066 浏览 什么是Balsamiq Mockups Balsamiq Mockups出自加利福尼亚州的Balsamiq工作 ...

  7. MYSql查詢一段時間記錄

    24小时内记录(即86400秒) $sql="SELECT video_id,count(id)as n FROM `rec_down` WHERE UNIX_TIMESTAMP(NOW() ...

  8. Java学习日记-2.4 浮点数

    http://wenku.baidu.com/view/e68b2ed5312b3169a451a4e2.html

  9. Android中ListView同过自定义布局并使用SimpleAdapter的方式实现数据的绑定

    1.listview的数据填充可以通过ArrayAdapter,SimpleAdapter,也可以是一个xml文件,但是ArrayAdapter与SimpleAdapter的区别是: 2 ArrayA ...

  10. SQL Server 数据库没有有效全部者的三种解决的方法

    问题:     开发的过程中,操作系统出了问题.决定重装系统.可是没有将SQL Server中的数据库文件分离出来,直接将系统格了.在新系统数据库中附加了数据库文件,一切还算正常.但当打开数据库关系图 ...