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

能否帮忙找下错,或是提供点数据

Posted by 20071002871 at 2009-02-24 20:36:29 on Problem 2777 and last updated at 2009-02-24 20:37:25
#include<stdio.h>
#include<string.h>
const int maxn=100010;
int flag[40];
struct node
{
 int low,high,left,right,count;
}a[4*maxn];
void init(int low,int high,int i)//初始化
{
  int mid;
  a[i].low=low;
  a[i].high=high;
  a[i].count=1;
  if(low==high)
       return ;
  a[i].left=2*i;
  a[i].right=2*i+1;
  mid=(low+high)/2;
  init(low,mid,2*i);
  init(mid+1,high,2*i+1);
}
void insert(int c,int x,int y,int k)//更新一个区间
{
 int l,r,mid;
 l=a[k].low;r=a[k].high;
 if(x<=r&&l<=y)//区间相交
 {
  if(a[k].count>0)
  {
	if(x<=l&&r<=y)
	{
		a[k].count=c;
		return ;
	}
	else
	{
	   if(a[k].left!=0)
	      a[2*k].count=a[2*k+1].count=a[k].count;
	}
  }
  if(a[k].left==0)
	   return ;
  a[k].count=-1;
  mid=(l+r)/2;
  if(y<=mid)
      insert(c,x,y,2*k);
  else if(x>mid)
	   insert(c,x,y,2*k+1);
  else
  {
	   insert(c,x,y,2*k);
       insert(c,x,y,2*k+1);
  }
  if(a[2*k].count>0&&a[2*k+1].count>0&&a[2*k].count==a[2*k+1].count)
	  a[k].count=a[2*k].count;
 }
}
void sum(int x,int y,int k)
{
 int l,r;
 l=a[k].low;r=a[k].high;
 if(x<=r&&l<=y)
 {
   if(a[k].count>0&&x<=l&&r<=y)//
   {
	flag[a[k].count]=1;
    return ;
   }
   if(a[k].left==0)
	   return ;
   sum(x,y,2*k);
   sum(x,y,2*k+1);
 }
}
int main()
{
 int i,c,x,y,s,n,t,p;char ch[2];
 scanf("%d%d%d",&n,&t,&p);
 memset(a,0,sizeof(a));
 init(1,n,1);
 while(p--)
 {
	scanf("%s",ch);
	if(ch[0]=='C')
	{
	  scanf("%d%d%d",&x,&y,&c);
	  if(x>y)
	  {
		i=x;
		x=y;
		y=i;    
	  }
	  insert(c,x,y,1);
	}
	else
	{
	  scanf("%d%d",&x,&y);
	  if(x>y)
	  {
		i=x;
		x=y;
		y=i;    
	  }
	  s=0;
	 for(i=1;i<=t;i++)
	    flag[i]=0;
	 sum(x,y,1);
	 for(i=1;i<=t;i++)
		  s+=flag[i];
	  printf("%d\n",s);
	}
 }
 return 0;
}



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