| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
为什么老是WA,和以前的一个AC代码对拍了半个小时都没出错#include<iostream> #include<cstdio> using namespace std; int ans=0; int n,nOpe; int x,y,xx,yy; bool tree[4010][4010]; void Update1D(int ind,int root,int l,int r) { if(l>=y&&r<=yy) { tree[ind][root]=!tree[ind][root]; return ; } int mid=(l+r)>>1; if(mid>=y)Update1D(ind,root<<1,l,mid); if(mid<yy)Update1D(ind,(root<<1)+1,mid+1,r); } void Update2D(int root,int l,int r) { if(l>=x&&r<=xx) { Update1D(root,1,1,n); return ; } int mid=(l+r)>>1; if(mid>=x)Update2D(root<<1,l,mid); if(mid<xx)Update2D((root<<1)+1,mid+1,r); } void Query1D(int ind,int root,int l,int r) { if(tree[ind][root])ans++; if(l==r)return ; int mid=(l+r)>>1; if(mid>=y)Query1D(ind,root<<1,l,mid); else Query1D(ind,(root<<1)+1,mid+1,r); } void Query2D(int root,int l,int r) { Query1D(root,1,1,n); if(l==r)return ; int mid=(l+r)>>1; if(mid>=x)Query2D(root<<1,l,mid); else Query2D((root<<1)+1,mid+1,r); } int main() { int nCase; scanf("%d",&nCase); while(nCase--) { scanf("%d%d",&n,&nOpe); char ch; for(int i=1;i<=nOpe;i++) { cin>>ch; if(ch=='C') { scanf("%d%d%d%d",&x,&y,&xx,&yy); Update2D(1,1,n); } else { scanf("%d%d",&x,&y); ans=0; Query2D(1,1,n); printf("%d\n",ans&1); } } printf("\n"); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator