2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N 1000005
using namespace std;

int c[35];
int tree[N*4];//正值表示该节点所管理的区间的颜色是纯色,-1表示的是非纯色
int n, m; 

void buildT(int ld, int rd, int p){
    if(ld <= rd){
        tree[p] = 2;//初始每一个节点的颜色全部都是2
        if(ld == rd) return;
        int mid=(ld + rd)>>1;
        buildT(ld, mid, p<<1);
        buildT(mid+1, rd, p<<1|1);
    }
}

void updateT(int ld, int rd, int a, int b, int col, int p){

    if(ld > rd) return ;

    if(tree[p] == col) return ;

    if(ld == a && rd == b){
        tree[p] = col;
        return ;
    }
    int mid = (ld + rd)>>1;

    if(tree[p] != -1){// p所管的区间之前是纯色,现在不是纯色了,向下更新其孩子节点的颜色为它的颜色
        tree[p<<1] = tree[p<<1 | 1] = tree[p];
        tree[p] = -1;
    }

    if(a > mid)
        updateT(mid+1, rd, a, b, col, p<<1 | 1);
    else if(b <= mid)
        updateT(ld, mid, a, b, col, p<<1);
    else{
        updateT(ld, mid, a, mid, col, p<<1);
        updateT(mid+1, rd, mid+1, b, col, p<<1 | 1);
    }
}

int cnt;

void querryT(int ld, int rd, int a, int b, int p){
    if(ld>rd) return ; 

    if(tree[p] != -1){//一直找到纯色的区间!
        c[tree[p]]=1;
        return ;
    }

    int mid = (ld+rd)>>1;
    if(a > mid)
        querryT(mid+1, rd, a, b, p<<1 | 1);
    else if(b <= mid)
        querryT(ld, mid, a, b, p<<1) ;
    else{
        querryT(ld, mid, a, mid, p<<1);
        querryT(mid+1, rd, mid+1, b, p<<1 | 1);
    }
}

int main(){
    while(scanf("%d%d", &n, &m) && (n || m)){
        char ch[2];
        int a, b, k;
        buildT(1, n, 1);
        while(m--){
            scanf("%s", ch);
            if(ch[0] == 'P'){
                scanf("%d%d%d", &a, &b, &k);
                updateT(1, n, a, b, k, 1);
            }
            else{
                scanf("%d%d", &a, &b);
                memset(c, 0, sizeof(c));
                querryT(1, n, a, b, 1);
                int i;
                for(i=1; i<=30; ++i)
                    if(c[i]){
                         printf("%d", i);
                         break;
                    }
                for(++i; i<=30; ++i)
                    if(c[i]) printf(" %d", i);
                printf("\n");
            }
        }
    }
    return 0;
}
时间: 2024-07-28 15:35:23

2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art的相关文章

2014 网选 广州赛区 hdu 5025 Saving Tang Monk(bfs+四维数组记录状态)

/* 这是我做过的一道新类型的搜索题!从来没想过用四维数组记录状态! 以前做过的都是用二维的!自己的四维还是太狭隘了..... 题意:悟空救师傅 ! 在救师父之前要先把所有的钥匙找到! 每种钥匙有 k 种, 每一种有多个! 只要求找到每一种的其中一个就可以! 找钥匙的顺序按照 第1种, 第2种, 第3种 ....第k种! 找钥匙的时间是一步, 走到相邻空地的时间是一步, 打蛇的时间就是两步! 求找到师傅的最少步数! 这里说一下 state[N][N][10][35]表示的含义: ->state[

2014 网选 上海赛区 hdu 5047 Sawtooth

题意:求n个'M'型的折线将一个平面分成的最多的面数!思路:我们都知道n条直线将一个平面分成的最多平面数是 An = An-1 + n+1也就是f(n) = (n*n + n +2)/2对于一个'M'型的折线呢?它有四条线,但是由于三个顶点的关系导致划分的平面的数目减少了9个!所以有递推公式 f(n) = (m*m + m + 2)/2 - 9*n; m = 4*n 最后 f(n) = (8*n+1)*(n-1)+2) 由于 n<=1e12 , 所以回报 long long!那么对于大于1e9的

2014 网选 5024 Wang Xifeng&#039;s Little Plot

题意:从任意一个任意一个可走的点开始找一个最长的路,这条路如果有转弯的话,那么必须是 90度,或者没有转弯! 思路: 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 !step[i][j][k] 表示的是(i,j)沿着k方向一直走到头或者转弯时的最长步数!最后枚举每一个可走点转弯为90度的路径,找到最长的长度! step[i][j][k1] + step[i][j][k2] 就是 (i, j)这个点 k1 和 k2方向构成90度! #include<iostream> #i

2014 网选 5014 Number Sequence(异或)

/* 题意:a, b两个序列,规定由[0, n]区间的数! 求 a[i] ^ b[i] 的和最大! 思路:如果数字 n的二进制有x位, 那么一定存在一个数字m,使得n^m的所有二进制位 都是1,也就是由x位1!这样下去的到的值就是最大值! */ #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define N 100005 using namespace s

2014 网选 5011 Game(Nim游戏,数学题)

/* 题意:Nim游戏! 思路:通过异或,判断将n个数表示成二进制的形式之后,是否对应位的数字1 的个数是偶数! */ #include<iostream> using namespace std; int main(){ int n, x, s; while(cin>>n){ s=0; while(n--){ cin>>x; s^=x; } if(s) cout<<"Win";//不是偶数 else cout<<"

2014 网选 5012 Dice(bfs模板)

/* 题意:就是给定两个筛子,每个筛子上6个面,每个面的数字属于[1,6], 且互不相同! 问a筛子最少经过按照题目规定的要求转动,达到和b筛子上下左右前后的数字相同! 思路:很直白的bfs,将每一种状态对应一个数字,保证这种状态不会重新加入队列中! */ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using

国内首个新闻评论分析网在广州上线

(记者 熊佳焰 通讯员 宋云燕) 随"网络问政"."网络监督"兴起,互联网俨然成为承载民意的第一载体.近日,中国第一新闻评论分析网"头文字网"在广州开发区上线,6月1日将正式对外启用. 届时,该网站通过当今世界最为先进的第四代信息搜索技术--摘要式智能搜索引擎技术,即可迅速统计网络民意并生成总体评价文章,网络民意冷暖将有"温度计". 国内首个新闻评论分析网在广州上线.

3A礼品网推出广州首家礼品卡配送平台

南都讯 记者谢睿 3A礼品网日前举行了<2011·3A礼品网中秋活动发布会>,针对现代社会礼品馈赠.员工福利.异地送礼等问题,开创了广州首家礼品卡配送平台,推出礼品自选.全国送达.网上选购及线下消费结合的全新礼品赠送模式. 据了解,该平台推出的3A礼品卡不仅可以在网上兑换,更可以在特约商户刷卡消费.3A礼品网由广州沃融网络科技有限公司与金融机构及第三方支付企业合作推出,是一个开放式礼品服务平台,主要四大核心业务为礼品卡.积分兑换.开放式平台与增值服务.

中粮集团 我买网进军广州市场

本报讯(记者薛松)日前,http://www.aliyun.com/zixun/aggregation/36617.html">中粮我买网宣布广州分公司成立并将于2013年1月正式上线销售.中粮我买网总经理赵平原表示,我买网主打食品网购,现已成立北京.上海.广州三家分公司并实现了辐射全国范围的落地配送.届时,我买网将凭借中粮全产业链的优势,集合国内外的产业优选供应链,给华南的消费者提供上万种特色商品,使消费者足不出户就能购买来自全球各地的食品. 市场调查显示,2012年中国网购用户达2.2