萌新WA求调
查看原帖
萌新WA求调
545924
云裳Destiny楼主2024/7/8 15:56

rt,AT 上 WA 了 9 个点

#include<bits/stdc++.h>
#define up(i,l,r) for(int i=l,END##i=r;i<=END##i;i++)
#define dn(i,l,r) for(int i=l,END##i=r;i>=END##i;i--)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
using namespace std;
const int INF=0x3f3f3f3f,N=2e5+7,p=1e9+7,nn=2000;
ll a[N],b[N],ans,n;
ll f[4007][4007];
ll fac[N],facinv[N];
namespace sol{
    ll read(){
        ll f=0,x=0;
        char c=getchar();
        while(c<'0'||c>'9') f|=c=='-',c=getchar();
        while(c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
        return f?-x:x;
    }
    void write(ll x){
        if(x<0) putchar('-'),x=-x;
        if(x>9) write(x/10);
        putchar(x%10+'0');
    }
    ll qpow(ll base,ll k){
    	ll f=1;
    	while(k){
    		if(k&1) (f*=base)%=p;
    		(base*=base)%=p,k>>=1;
		}
		return f;
	}
	ll c(ll n,ll m){
		return (fac[n]*facinv[m]%p*facinv[n-m])%p;
	}
    void solve(){
		n=read();
		up(i,1,n) a[i]=read(),b[i]=read(),f[nn-a[i]][nn-b[i]]++;
		fac[0]=1,facinv[0]=qpow(fac[0],p-2)%p;
		up(i,1,8000) fac[i]=(fac[i-1]*i)%p,facinv[i]=qpow(fac[i],p-2)%p;
		up(i,1,nn<<1) up(j,1,nn<<1) (f[i][j]+=f[i-1][j]+f[i][j-1])%=p;
		up(i,1,n) {
			(ans+=f[a[i]+nn][b[i]+nn])%=p;
			ll k=c(2*a[i]+2*b[i],2*a[i])%p;
			(ans-=k)%=p;
			(ans+=p)%=p;
		}
		(ans*=qpow(2,p-2))%=p;
		write(ans);
    }
}
using namespace sol;
signed main(){
    solve();
    return 0;
}

2024/7/8 15:56
加载中...