线段树成段覆盖:
#include<cstdio>
#include<cstring>
#define MAXN 10000
int seg[4*MAXN],n,cnt[MAXN],col[MAXN];
void down(int x)
{
if(seg[x]!=-1)
{
seg[2*x]=seg[2*x+1]=seg[x];
seg[x]=-1;
}
}
void ud(int le,int re,int a,int b,int i,int x)
{
if(le==a&&re==b)
{
seg[i]=x;
return;
}
down(i);
int mid=(le+re)>>1;
if(mid>=b)
ud(le,mid,a,b,2*i,x);
else
if(mid<a)
ud(mid+1,re,a,b,2*i+1,x);
else
{
ud(le,mid,a,mid,2*i,x);
ud(mid+1,re,mid......
阅读全文