zoukankan      html  css  js  c++  java
  • Count the Colors ZOJ

    GO

    题意:给一个区间,有n次染色操作,每次将[x1, x2]染为c,求最后每种颜色各有多少线段可以看到。

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<set>
    #include<vector>
    
    using namespace std;
    #define INF 0x3f3f3f3f
    #define eps 1e-10
    typedef long long LL;
    const int MAXN = 1e5+5;
    const int mod = 998244353;
    
    LL st[MAXN << 2];
    int vis[MAXN];
    void pushdown(int o)
    {
        if(st[o] != -1)
        {
            st[o << 1] = st[o];
            st[o << 1 | 1] = st[o];
            st[o] = -1;
            return;
        }
    }
    void update(int o,int l,int r,int ql,int qr,int c)
    {
        if(ql <= l && r <= qr) {
            st[o] = c;
            return;
        }
        else {
            if(st[o] != c){
                pushdown(o);
                int m = (l + r) >> 1;
                if(ql <= m) update(o << 1,l,m,ql,qr,c);
                if(m + 1 <= qr) update(o << 1 | 1,m + 1,r,ql,qr,c);
            }
            else return;
        }
    
    }
    int last;
    void query(int o,int l,int r)
    {
        if(l == r)
        {
            if(st[o] != -1 && st[o] != last)
                vis[st[o]]++;
            last = st[o];
            return;
        }
        pushdown(o);
        int m = (l + r) >> 1;
        query(o << 1,l,m);
        query(o << 1 | 1,m + 1,r);
    }
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            memset(st,-1,sizeof st);
            while(n--)
            {
                int x,y,c;
                scanf("%d %d %d",&x,&y,&c);
                update(1,1,8000,x + 1,y,c);
            }
            memset(vis,0,sizeof vis);
            last = -1;
            query(1,1,8000);
            for(int i = 0; i <= 8000; i++)
                if(vis[i])
                    printf("%d %d
    ",i,vis[i]);
            printf("
    ");
        }
    }
    View Code
  • 相关阅读:
    SSM框架使用遇到的问题
    《深入浅出wpf》第四章 x名称空间详解
    《深入浅出wpf》第三章
    《深入浅出wpf》第二章
    《深入浅出wpf》第一章
    《深入浅出wpf》序
    opencv2411配置
    k均值
    qt新建类报无法解析外部符号(link错误)
    fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  • 原文地址:https://www.cnblogs.com/smallhester/p/11318534.html
Copyright © 2011-2022 走看看