$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. 剑指Offer面试题:19.包含Min函数的栈
  2. entityframework学习笔记--005-给code first一个正确的解释
  3. (转载)jQuery 1.6 源码学习(二)——core.js[2]之extend&amp;ready方法
  4. CodeForces 371D Vessels(树状数组)
  5. hadoop datanode 挂机恢复后,多复制的块删除的问题
  6. fsimage 和 edits log
  7. BZOJ3513: [MUTC2013]idiots
  8. 构造函数后面的base()
  9. Curl之获取外网IP
  10. Android5.0新特性:RecyclerView实现上拉加载更多
  11. YouTube为什么打不开?以及简便的訪问的方法/解决方式!
  12. PAT (Advanced Level) 1074. Reversing Linked List (25)
  13. Ajax获取服务器信息
  14. Webpack学习-Loader
  15. python3 经典排序方法
  16. 通过django的rest-framework……(CBV)
  17. arguments.callee的作用及替换方案
  18. .NET 三层框架
  19. 写给大忙人的Elasticsearch架构与概念(未完待续)
  20. C语言复习:结构体

热门文章

  1. Laravel中利用队列发送邮件的方法示例
  2. 当better-scroll遇见了react擦出的火花
  3. Python中json和eval的区别
  4. ModuleNotFoundError: No module named &#39;tools.nnwrap&#39; pytorch 安装
  5. 报错No module named IPython的解决方法
  6. Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1) 题解
  7. 模板—v-dcc缩点
  8. Android中使用lambda表达式
  9. PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能
  10. 指针版的PStash(用一个void指针数组, 来保存存入元素的地址) 附模板化实现 p321