$A$

$B$

$C$

$D$

$E$

总感觉做过的亚子,,,$QwQ$

首先发现到达每个点所需要的操作一和操作二的次数都是可以求出来的?考虑先求出总移动数,然后按总移动数排序.

然后到达某点的方案数就是$C(x,x+y)$-经过前面点的方案数.

最后答案就是总方案数-经过各点的方案数,$over$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define rg register
#define gc getchar()
#define ll long long
#define int long long
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(rg int i=x;i<=y;++i)
#define my(i,x,y) for(rg int i=x;i>=y;--i) const int N=+,mod=1e9+;
int n,Sx,Sy,Ax,Ay,Bx,By,nod_cnt,jc[N],inv[N],f[N];
struct node{int x,y;}nod[N]; il int read()
{
rg char ch=gc;rg int x=;rg bool y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void cal(ri &x,ri &y)
{
ll a1,a2,b1,b2;
a1=x*By-y*Bx;a2=Ax*By-Ay*Bx;
b1=x*Ay-Ax*y;b2=Bx*Ay-Ax*By;
if(a2==||b2==){x=-;y=-;return;}
if((a1/a2)*a2!=a1||(b1/b2)*b2!=b1){x=-;y=-;return;}
x=a1/a2;y=b1/b2;
}
il bool cmp(node gd,node gs){return gd.x==gs.x?gd.y<gs.y:gd.x<gs.x;}
int C(int n,int m){if(n<m)return ;return 1ll*jc[n]*inv[m]%mod*inv[n-m]%mod;}
il int power(ri x,ri y){ri ret=;while(y){if(y&)ret=1ll*ret*x%mod;x=1ll*x*x%mod;y>>=;}return ret;} signed main()
{
//freopen("1.in","r",stdin);freopen("E.out","w",stdout);
Sx=read();Sy=read();n=read();Ax=read(),Ay=read(),Bx=read(),By=read();cal(Sx,Sy);nod[++nod_cnt]=(node){Sx,Sy};
rp(i,,n){ri x=read(),y=read();cal(x,y);if(x>= && y>= && x<=Sx && y<=Sy)nod[++nod_cnt]=(node){x,y};}
sort(nod+,nod++nod_cnt,cmp);
//rp(i,1,nod_cnt)printf("%d %d\n",nod[i].x,nod[i].y);
jc[]=;rp(i,,N-)jc[i]=1ll*jc[i-]*i%mod;
inv[N-]=power(jc[N-],mod-);my(i,N-,)inv[i]=1ll*inv[i+]*(i+)%mod;
rp(i,,nod_cnt)
{
f[i]=C(nod[i].x+nod[i].y,nod[i].x);
rp(j,,i-)f[i]=(f[i]-1ll*f[j]*C(nod[i].x-nod[j].x+nod[i].y-nod[j].y,nod[i].x-nod[j].x)%mod+mod)%mod;
}
printf("%lld\n",f[nod_cnt]);
return ;
}

随机推荐

  1. @loj - 2480@ 「CEOI2017」One-Way Streets

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一张 n 个点 m 条边的无向图,现在想要把这张图定向. 有 ...

  2. Git 进阶:10大技巧让你迅速提升

    1.Git自动补全 假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情. 命令: cd ~ curl https://raw.github.com/git/git/ma ...

  3. Careers/Staffing Index

    Careers/Staffing Index     Not having data governance can hurt your business. Download this eBook to ...

  4. NetBeans配置

    NetBeans下载链接:https://netbeans.org/downloads/8.2/ 选择PHP×64版本 NetBeans 安装插件Darcula LAF for NetBeansctr ...

  5. iphone开发中调用系统打电话功能

    iphone开发中调用打电话功能,一般有2种: 1.系统的打电话代码,不返回当前程序: Java代码 [[UIApplication sharedApplication] openURL:[NSURL ...

  6. HTML5--语法

    一.标记方法 1.内容类型(ContentType)还是.text/html 2.声明:<!DOCTYPE html SYSTEM “about:legacy-compat”> 3.字符编 ...

  7. Laravel 中 validation 验证 返回中文提示 全局设置

    <?php return [ /* |-------------------------------------------------------------------------- | V ...

  8. LRJ 3-7

    #define _CRT_SECURE_NO_WARNINGS #include <cstdio> int main() { int T; int m, n; ][]; // 4 < ...

  9. Laravel5.3使用学习笔记---中间件

    Laravel提供了中间件的使用.那什么是中间件呢,根据用法,我总结为,夹在“请求—>控制器—>响应—>end”中间运行的代码片段.本文将以官方英文文本为基础资料进行笔记记录. La ...

  10. laravel的Eloquent关联关系

    1.简介: 1>Eloquent 关联关系以Eloquent模型类方法的形式被定义(是模型类的一个方法). 2>同 Eloquent 模型本身一样,关联关系也是强大的查询构建器,定义关联关 ...