poj_2777线段树+位运算

第一次没想到用位运算,不出意料的T了,,,

PS:在床上呆了接近两个月后,我胡汉三又杀回来刷题啦~~

#include
#include
#include
#include
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
const int maxn=100004;
using namespace std;
int sum[maxn<<2];
int col[maxn<<2];
void pushDown(int rt)
{
    if(sum[rt]){
    col[rt<<1]=col[rt<<1|1]=1<<(sum[rt]-1);
    sum[rt<<1]=sum[rt<<1|1]=sum[rt];
    sum[rt]=0;
    }
}
void update(int c,int L,int R,int l,int r,int rt)
{
    if(l>=L&&R>=r)
    {
        sum[rt]=c;
        col[rt]=1<<(sum[rt]-1);
       // cout<r||R>1;
    if(m>=L) update(c,L,R,lson);
    if(mr||R>1;
    return query(L,R,lson)|query(L,R,rson);
    /*if(m>=L) query(L,R,lson);
    if(mb)
                {
                    int x=a;a=b;b=x;
                }
                getchar();
                int tem=query(a,b,1,l,1);
                int ans=0;
                //cout<>=1;
                }
                printf("%d\n",ans);
            }
            else
            {
                scanf("%d%d%d",&a,&b,&c);
                 if(a>b)
                {
                    int x=a;a=b;b=x;
                }
                getchar();
                update(c,a,b,1,l,1);
                //cout<

转载于:https://www.cnblogs.com/vactor/p/4099981.html

你可能感兴趣的:(poj_2777线段树+位运算)