为什么类型统一后分变低了???!!!

P2154 [SDOI2009] 虔诚的墓主人

tql 吊打我 %%%
by 梧桐灯 @ 2019-09-26 16:24:14


tql 吊打我 %%%
by Haishu @ 2019-09-26 16:24:23


# tql 吊打我 %%%
by Binary_Search_Tree @ 2019-09-26 16:24:26


# tql 吊打我 %%%
by lobserver @ 2019-09-26 16:24:44


FAKER!!!!!!!!!
by 月·无笙 @ 2019-09-26 16:24:46


@[lobserver](/space/show?uid=23336) @[Binary_Search_Tree](/space/show?uid=40985) 我听到有人在说我。。。。
by WhalFaling @ 2019-09-26 16:28:04


``` #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<vector> using namespace std; const int N=1000000005; const int W=100005; const long long mod=2147483648ll; #define int long long typedef long long ll; int n,m,w; int K; int locx[W],locy[W],totx,toty; struct LOC { int x; int y; }zb[W]; ll C[15][W]; ll c[W]; int init[W]; vector<int> X[W]; struct TREE { int L; int R; // int l,r; ll data; }tree[W<<4]; ll ans; void build(int k,int l,int r) { if(l==r) { // tree[k].l=l; //tree[k].r=r; tree[k].R=init[l]; return ; } int mid=l+r>>1; // tree[k].l=l; // tree[k].r=r; build(k<<1,l,mid); build(k<<1|1,mid+1,r); } void update(int k,int l,int r,int pos) { if(l==r) { tree[k].R--; tree[k].L++; tree[k].data=c[tree[k].L]*c[tree[k].R]%mod; return ; } int mid=(l+r)>>1; if(pos<=mid) update(k<<1,l,mid,pos); else update(k<<1|1,mid+1,r,pos); tree[k].data=(tree[k<<1].data+tree[k<<1|1].data)%mod; } ll query(int k,int l,int r,int ql,int qr) { if(l>=ql&&r<=qr) { // printf("tree[%d].data=%d\n",k,tree[k].data); return tree[k].data; } int mid=l+r>>1; ll res=0; if(ql<=mid) res=(res+query(k<<1,l,mid,ql,qr))%mod; if(mid<qr) res=(res+query(k<<1|1,mid+1,r,ql,qr))%mod; return res%mod; } main() { scanf("%lld%lld",&n,&m); scanf("%lld",&w); for(int i=1;i<=w;i++) { scanf("%lld%lld",&zb[i].x,&zb[i].y); locx[++totx]=zb[i].x; locy[++toty]=zb[i].y; } sort(locx+1,locx+1+totx); sort(locy+1,locy+1+toty); totx=unique(locx+1,locx+1+totx)-locx-1; toty=unique(locy+1,locy+1+toty)-locy-1; //sort(zb+1,zb+1+w,cmp); scanf("%lld",&K); C[0][0]=1; for(int i=1;i<=w;i++) { init[zb[i].y=lower_bound(locy+1,locy+1+toty,zb[i].y)-locy]++; X[lower_bound(locx+1,locx+1+totx,zb[i].x)-locx].push_back(zb[i].y); C[0][i]=1; for(int j=1;j<=K;j++) C[j][i]=(C[j][i-1]+C[j-1][i-1])%mod; c[i]=C[K][i]; } build(1,1,toty); for(int i=1;i<=totx;i++) { sort(X[i].begin(),X[i].end()); if(!X[i].empty()) update(1,1,toty,X[i][0]); for(int j=1;j<X[i].size();j++) { if(X[i][j-1]+1<X[i][j]&&j>=K&&X[i].size()-j>=K)/ { // printf("QAQ\n"); ans=(ans+query(1,1,toty,X[i][j-1]+1,X[i][j]-1)*c[j]%mod*c[X[i].size()-j]%mod)%mod; } update(1,1,toty,X[i][j]); } } printf("%lld\n",(ans+mod)%mod); return 0; } ```
by 繁星灬夏若離 @ 2019-09-26 16:32:03


感谢巨佬。tql %%%
by 月·无笙 @ 2019-09-26 16:44:24


# tql 吊打我 %%%
by whzxy_starklover @ 2019-09-27 16:58:41


|