标签:des style color io os ar for div art
5 10 P 1 2 3 P 2 3 4 Q 2 3 Q 1 3 P 3 5 4 P 1 2 7 Q 1 3 Q 3 4 P 5 5 8 Q 1 5 0 0
4 3 4 4 7 4 4 7 8
不好意思,代码不好看
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)
using namespace std;
#define N 1000005
struct stud{
int le,ri;
int color;
bool cover;
}f[N*4];
int sum;
int n,t,m;
int b[35];
void fddd(int x)
{
int nn=1,mm;
while(x)
{
mm=x&1;
if(mm) b[nn]=1;
x>>=1;
nn++;
}
}
void build(int pos,int le,int ri)
{
f[pos].le=le;
f[pos].ri=ri;
f[pos].cover=true;
f[pos].color=1<<2;
if(le==ri) return ;
int mid=MID(le,ri);
build(L(pos),le,mid);
build(R(pos),mid+1,ri);
}
void update(int pos,int le,int ri,int v)
{
if(f[pos].le>=le&&f[pos].ri<=ri)
{
f[pos].color=v;
f[pos].cover=true;
return ;
}
if(f[pos].cover)
{
f[L(pos)].color=f[pos].color;
f[L(pos)].cover=true;
f[R(pos)].color=f[pos].color;
f[R(pos)].cover=true;
f[pos].cover=false;
}
int mid=MID(f[pos].le,f[pos].ri);
if(mid>=ri)
update(L(pos),le,ri,v);
else
if(mid<le)
update(R(pos),le,ri,v);
else
{
update(L(pos),le,mid,v);
update(R(pos),mid+1,ri,v);
}
f[pos].color=f[L(pos)].color|f[R(pos)].color;
}
void query(int pos,int le,int ri)
{
if(f[pos].le>=le&&f[pos].ri<=ri)
{
sum|=f[pos].color;
return ;
}
if(f[pos].cover)
{
f[L(pos)].color=f[pos].color;
f[L(pos)].cover=true;
f[R(pos)].color=f[pos].color;
f[R(pos)].cover=true;
f[pos].cover=false;
}
int mid=MID(f[pos].le,f[pos].ri);
if(mid>=ri)
query(L(pos),le,ri);
else
if(mid<le)
query(R(pos),le,ri);
else
{
query(L(pos),le,mid);
query(R(pos),mid+1,ri);
}
}
int main()
{
int i;
char c[10];
while(scanf("%d%d",&n,&m),n+m)
{
build(1,1,n);
int le,ri,v;
int temp;
while(m--)
{
scanf("%s",c);
if(c[0]=='P')
{
scanf("%d%d%d",&le,&ri,&v);
if(le>ri){temp=le; le=ri; ri=temp;}
update(1,le,ri,1<<v);
}
else
{
scanf("%d%d",&le,&ri);
if(le>ri){temp=le; le=ri; ri=temp;}
memset(b,0,sizeof(b));
sum=0;
query(1,le,ri);
fddd(sum);
int num=0;
for(i=0;i<35;i++)
{
if(b[i])
{
if(num) printf(" ");
printf("%d",i-1);
num=1;
}
}
printf("\n");
}
}
}
return 0;
}
HDU 5023 A Corrupt Mayor's Performance Art (线段树)
标签:des style color io os ar for div art
原文地址:http://blog.csdn.net/u014737310/article/details/39433247