首先这个题需要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: [AHOI2006]上学路线route(最短路+最小割)

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

  4. codevs2693 上学路线(施工)

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

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

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

  6. BZOJ 1266: [AHOI2006]上学路线route

    题目描述 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可:"很 ...

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

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1266 分析: 很简单的题目,容易想到就是把所有的最短路径挑出来,然后在这个图里跑最小割 ...

  8. bzoj1266: [AHOI2006]上学路线route

    最短路+最小割 首先如何使最短路变长?就是要每一条最短路都割一条边. 我们求出每个点到点1和点n的距离,就可以知道哪些边在最短路上(一开始没有想到求到0和n的距离,想用floyd,但是n=500,怕超 ...

  9. codeforces #313 div1 C

    同BZOJ 3782 上学路线 QAQ 还比那个简单一点 把坐标(1,1)-(n,m)平移成(0,0)-(n-1,m-1) 设dp[i]表示从(1,1)出发第一次经过障碍且到达第i个障碍的方案数 首先 ...

随机推荐

  1. windows系统命令总结

    windows系统命令总结 IIS管理器:inetmgr SQL server数据库管理器:ssms windows服务:services.msc

  2. 目录的文件权限-X

    所有目录务必保持具有X权限(可执行权限)!!,否则无法进入该目录及子目录,且无法读取该目录及子目录下的文件或子目录

  3. Java魔法堂:类加载机制入了个门

    一.前言 当在CMD/SHELL中输入 $ java Main<CR><LF> 后,Main程序就开始运行了,但在运行之前总得先把Main.class及其所依赖的类加载到JVM ...

  4. P值,“差异具有显著性”和“具有显著差异”

      P值是论文中最常用的一个统计学指标,可是其误用.解释错误的现象却很常见.因此,很有必要说明p值的意义.用法及常见错误.   P值指的是比较的两者的差别是由机遇所致的可能性大小.P值越小,越有理由认 ...

  5. JS转义 escape()、encodeURI()、encodeURIComponent()区别详解

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...

  6. ConcurrentHashMap--锁的分段技术

    ConcurrentHashMap是Java 5中支持高并发.高吞吐量的线程安全HashMap实现. HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable ...

  7. SAFS Init Files

    There're many deployment files for configuration. We need to learn how SAFS read these depolyment fi ...

  8. Tomcat 服务器版本的区别以及下载与安装

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了 ...

  9. 【Mysql】 my.ini配置一例

    # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-co ...

  10. spring aop开发常见错误

    1. Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreExcepti ...