zoukankan      html  css  js  c++  java
  • hdu 1698 Just a Hook

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

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 100010
     5 #define ll __int64
     6 using namespace std;
     7 
     8 int n,x1,x2,c,m;
     9 struct node
    10 {
    11     int l,r;
    12     int cover;
    13 } tree[maxn*4];
    14 
    15 void build(int i,int l,int r)
    16 {
    17     tree[i].l=l;
    18     tree[i].r=r;
    19     tree[i].cover=1;
    20     if(l==r) return ;
    21     int mid=(l+r)>>1;
    22     build(i<<1,l,mid);
    23     build(i<<1|1,mid+1,r);
    24 }
    25 
    26 void down(int i)
    27 {
    28     if(tree[i].l==tree[i].r) return ;
    29     if(tree[i].cover!=-1)
    30     {
    31         tree[i<<1].cover=tree[i].cover;
    32         tree[i<<1|1].cover=tree[i].cover;
    33         tree[i].cover=-1;
    34     }
    35 }
    36 void update(int i,int l,int r,int c)
    37 {
    38     if(tree[i].cover==c) return;
    39     if(tree[i].l==l&&tree[i].r==r)
    40     {
    41         tree[i].cover=c;
    42         return ;
    43     }
    44     down(i);
    45     int mid=(tree[i].l+tree[i].r)>>1;
    46     if(r<=mid)
    47     {
    48         update(i<<1,l,r,c);
    49     }
    50     else if(l>mid)
    51     {
    52         update(i<<1|1,l,r,c);
    53     }
    54     else
    55     {
    56         update(i<<1,l,mid,c);
    57         update(i<<1|1,mid+1,r,c);
    58     }
    59 }
    60 
    61 ll search1(int i)
    62 {
    63     if(tree[i].cover!=-1)
    64     {
    65         return (tree[i].r-tree[i].l+1)*tree[i].cover;
    66     }
    67     down(i);
    68     return search1(i<<1)+search1(i<<1|1);
    69 }
    70 int main()
    71 {
    72     int t;
    73     scanf("%d",&t);
    74     int cas=1;
    75     while(t--)
    76     {
    77         scanf("%d",&n);
    78         scanf("%d",&m);
    79         build(1,1,n);
    80         for(int i=1; i<=m; i++)
    81         {
    82             scanf("%d%d%d",&x1,&x2,&c);
    83             update(1,x1,x2,c);
    84         }
    85         printf("Case %d: The total value of the hook is %I64d.
    ",cas,search1(1));
    86         cas++;
    87     }
    88     return 0;
    89 }
    View Code
  • 相关阅读:
    Maven 基础
    Apache 免重启 刷新jsp
    【FeignClient证书】 忽略证书验证
    【转】MAC 配置ssh免密登录
    一次神奇的JVM调优
    Js 监听器
    Js 使用Map
    [leetcode]两数之和
    nginx在普通用户下的部署和安装
    oracle11G的linux下的离线安装教程
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3916060.html
Copyright © 2011-2022 走看看