zzulioj-1877 蛤玮打扫教室

原创 2016年06月01日 19:25:24

区间覆盖,延迟操作

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <stack>
#include <queue> 
#define maxn 100005 
#define INF 1e9
typedef long long ll;

using namespace std;
int num[maxn<<2], add[maxn<<2];
int x[maxn], y[maxn];
void Pushdown(int n){

    if(add[n]){
        num[n<<1] += add[n];
        num[n<<1|1] += add[n];
        add[n<<1|1] += add[n];
        add[n<<1] += add[n];  
        add[n] = 0;
    }
}
void Update(int n, int l, int r, int L, int R){

    if(l == L && R == r){

        add[n] += 1;
        num[n] += 1;
        return ;
    }
    Pushdown(n);
    int mid = (l + r) >> 1;
    if(R <= mid)
      Update(n<<1, l, mid, L, R);
    else if(L > mid)
      Update(n<<1|1, mid+1, r, L, R);
    else{
        Update(n<<1, l, mid, L, mid);
        Update(n<<1|1, mid+1, r, mid+1, R);
    }
    num[n] = min(num[n<<1], num[n<<1|1]);
}
void Query(int n, int l, int r, int L, int R, int& s){

    if(l == L && R == r){
        s = min(s, num[n]);
        return ;
    } 
    Pushdown(n);
    int mid = (l + r) >> 1;
    if(R <= mid)
      Query(n<<1, l, mid, L, R, s);
    else if(L > mid)
     Query(n<<1|1, mid+1, r, L, R, s);
    else{
        Query(n<<1, l, mid, L, mid, s);
        Query(n<<1|1, mid+1, r, mid+1, R, s);
    } 
}
int main(){

//  freopen("in.txt", "r", stdin);
    int t;

    scanf("%d", &t);
    while(t--){

        vector<int> v;
        memset(num, 0, sizeof(num));
        memset(add, 0, sizeof(add));
        int n, m;
        scanf("%d%d", &n, &m);
        for(int i = 1; i <= m; i++){
            scanf("%d%d", x+i, y+i);
            Update(1, 1, n, x[i], y[i]);
        }
        for(int i = 1; i <= m; i++){
            int s = 1000000000;
            Query(1, 1, n, x[i], y[i], s);
            if(s > 1){
                v.push_back(i);
            }
        }
        printf("%d\n", v.size());
        if(v.size() > 0)
         printf("%d", v[0]);
        for(int i = 1; i < v.size(); i++)
         printf(" %d", v[i]);
        if(v.size() > 0)
         puts("");
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

ZZULIOJ 1877 蛤玮打扫教室【RMQ】

1877: 蛤玮打扫教室 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 635  Solved: 155 SubmitStatusWeb ...

正式赛-ZZULIOJ-1877-蛤玮打扫教室(裸线段树)

Contest - “玲珑杯”郑州轻工业学院第八届ACM程序设计大赛暨河南高校邀请赛-正式赛Problem D: 蛤玮打扫教室Time Limit: 2 Sec Memory Limit: 128 ...

zzuoj1877: 蛤玮打扫教室

1877: 蛤玮打扫教室 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 353  Solved: 77 SubmitStatusWeb ...

zzuli-蛤玮打扫教室(线段树区间更新)

1877: 蛤玮打扫教室 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 555  Solved: 132 SubmitStatusWeb ...

2016zzuli校赛D题《蛤玮打扫教室》(线段树)

题意:给出n个房间m个人,每个人需要打扫[l,r]的房间。问有几个队可以偷懒不用干活 代码:#include #include #include #include #include #include...

Problem 1004: 蛤玮打扫教室(区间覆盖端点记录)

Problem 1004: 蛤玮打扫教室 Time Limits:  1000 MS   Memory Limits:  65536 KB 64-bit interger IO for...

ZZULIOJ 1878: 蛤玮准备礼物

1878: 蛤玮准备礼物 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 850  Solved: 138 SubmitStatusWeb...

ZZULIOJ 1882: 蛤玮的魔法 (计算几何)

1882: 蛤玮的魔法 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 313  Solved: 95 SubmitStatusWeb ...

正式赛-ZZULIOJ-1881-蛤玮的机房(并查集)

Contest - “玲珑杯”郑州轻工业学院第八届ACM程序设计大赛暨河南高校邀请赛-正式赛Problem H: 蛤玮的机房Time Limit: 1 Sec Memory Limit: 128 M...

ZZULIOJ-1874: 蛤玮学计网

蛤玮最近学习了关于ip的知识,于是他迫不及待的想把新知识传授给她的妹子.蛤玮的妹子随便写下了一个字符串,蛤玮现在要告诉她这个字符串是不是一个合法的ip地址. 为简单考虑,仅考虑ipv4的情况,即合法i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zzulioj-1877 蛤玮打扫教室
举报原因:
原因补充:

(最多只允许输入30个字)