$vjudge$联赛专题训练三做题记录
$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 ;
}
随机推荐
- HZOJ Tree
看到换根果断lct啊,然而其实我板子还没有打熟,还不会维护子树信息,于是就挂掉了…… 然而正解并不是lct. 其实好像很久很久以前将lca的时候好像讲到过一道换根的题,当时没有听懂. 直接说正解吧: ...
- LocalDate、LocalDateTime与timestamp、Date的转换
LocalDate.LocalDateTime与timestamp.Date的转换 1.LocalDate转Date LocalDate nowLocalDate = LocalDate.now(); ...
- 【codeforces 798D】Mike and distribution
[题目链接]:http://codeforces.com/contest/798/problem/D [题意] 让你选一个下标集合 p1,p2,p3..pk 使得2*(a[p1]+a[p2]+..+a ...
- PHP怎么调用其他类的方法
2个PHP,这个PHP中的类调用另一个PHP中的类,如何调用.Java中是import ,php中是什么?还是用其他什么方法? 1.引用类:比如类名为product,则:include('...路径/ ...
- @codechef - SERSUM@ Series Sum
目录 @description@ @solution@ @part - 1@ @part - 2@ @part - 3@ @accepted code@ @details@ @description@ ...
- PHP 内存管理及垃圾回收机制
PHP5的内存管理 对象传递 PHP5使用了Zend引擎II,对象被储存于独立的结构Object Store中,而不像其它一般变量那样储存于Zval中(在PHP4中对象和一般变量一样存储于Zval). ...
- SuperSocket命令加载器 (Command Loader)
在某些情况下,你可能希望通过直接的方式来加载命令,而不是通过自动的反射. 如果是这样,你可以实现你自己的命令加载器 (Command Loader): public interface IComman ...
- HTML静态网页---标签
一. 创建HTML: (一) body的属性: bgcolor 页面背景色 background 背景壁纸.图片 text 文字颜色 topmargin 上边距 leftmargin ...
- 快速理解bootstrap,bagging,boosting,gradient boost-三个概念
1 booststraping:意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法. 其核心思想和基本步骤如下: (1 ...
- springmvc 过滤器和拦截器
1. 拦截器: interceptor 过滤器(filter)与拦截器(intercepter)相同点:1) 都可以拦截请求,过滤请求2) 都是应用了过滤器(责任链)设计模式 2.区别: 1) fi ...