• 简单的覆盖问题,,通过覆盖的g不同 有这不同的价值 最后还是一段上求和


    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<queue>
    #include<math.h>
    using namespace std;
    #define N 100005
    #define lson rood<<1
    #define rson rood<<1|1
    int w[N];
    struct node
    {
        int l,r,mid,len;
        int v;
    } a[N<<2];
    void q(int rood,int l,int r)
    {
        a[rood].l=l;a[rood].r=r;a[rood].mid=(r+l)/2;
        a[rood].len=(r-l+1);a[rood].v=1;
        if(l!=r)
        {
            q(lson,l,a[rood].mid);
            q(rson,a[rood].mid+1,r);
        }
    }
    void qq(int rood,int l,int r,int g)
    {
        if(a[rood].v==g)
            return ;
        if(a[rood].l==l&&a[rood].r==r)
        {
            a[rood].v=g;
            return ;
        }
        if(a[rood].v!=-1)
        {
            a[lson].v=a[rson].v=a[rood].v;
            a[rood].v=-1;
        }
        if(a[rood].mid>=r) qq(lson,l,r,g);
        else if(a[rood].mid<l) qq(rson,l,r,g);
        else
        {
            qq(lson,l,a[rood].mid,g);
            qq(rson,a[rood].mid+1,r,g);
        }
    }
    int qqq(int rood)
    {
        if(a[rood].v!=-1)
            return a[rood].v*a[rood].len;
        else
            return qqq(lson)+qqq(rson);
    }
    int main()
    {
        int T,n,e,f,g,m,t=1;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&m);
            q(1,1,n);
            while(m--)
            {
                scanf("%d%d%d",&e,&f,&g);
                qq(1,e,f,g);
            }
            printf("Case %d: The total value of the hook is %d.
    ",t++,qqq(1));
        }
        return 0;
    }

    http://acm.hdu.edu.cn/showproblem.php?pid=1698

  • 相关阅读:
    编程经验
    GIS业务逻辑
    算法逻辑
    js中arguments的作用
    C#基础及记忆概念
    POI创建Excle
    数据库元数据分析Demo
    c3p0写连接池 Demo
    dbutils的使用Demo
    dbcp写连接池 Demo
  • 原文地址:https://www.cnblogs.com/a719525932/p/5667260.html
Copyright © 2020-2023  润新知