Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么老是WA,和以前的一个AC代码对拍了半个小时都没出错

Posted by 1738160864 at 2014-12-19 16:06:30 on Problem 2155
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator