其他分享
首页 > 其他分享> > 「JLOI2015」骗我呢 解题报告?

「JLOI2015」骗我呢 解题报告?

作者:互联网

「JLOI2015」骗我呢

这什么神仙题

可以学到的东西

对越过直线的东西翻折进行容斥

之类的..吧?


Code:

#include <cstdio>
const int mod=1e9+7;
const int N=3e6+10;
inline int add(int a,int b){return a+b>=mod?a+b-mod:a+b;}
#define mul(a,b) (1ll*(a)*(b)%mod)
int qp(int d,int k){int f=1;while(k){if(k&1)f=mul(f,d);d=mul(d,d),k>>=1;}return f;}
int fac[N],inv[N],n,m;
int C(int m,int n){return mul(fac[m],mul(inv[m-n],inv[n]));}
int g(int,int);
int f(int,int);
int g(int x,int y){return (x<0||y<0)?0:add(C(x+y,x),mod-f(y-1,x+1));}
int f(int x,int y){return (x<0||y<0)?0:add(C(x+y,x),mod-g(y+2+m,x-2-m));}
int main()
{
    scanf("%d%d",&n,&m);
    fac[0]=1;for(int i=1;i<N;i++) fac[i]=mul(fac[i-1],i);
    inv[N-1]=qp(fac[N-1],mod-2);
    for(int i=N-2;~i;i--) inv[i]=mul(inv[i+1],i+1);
    printf("%d\n",add(C(m+2*n+1,n),add(mod-f(n-1,m+n+2),mod-g(m+n+2,n-1))));
    return 0;
}

2019.2.27

标签:JLOI2015,return,报告,int,inv,解题,mul,const,mod
来源: https://www.cnblogs.com/butterflydew/p/10442061.html