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

    第一次AC的数据结构的题目呢,线段树简单题

     1 # include <cstdio>
     2 # include <iostream>
     3 # include <algorithm>
     4 # include <cstring>
     5 using namespace std;
     6 
     7 const int maxn=1e5+5;
     8 int val[maxn*4],lazy[maxn*4];
     9 
    10 void build(int l,int r,int rt){
    11     if(l==r){
    12         val[rt]=1;
    13         return ;
    14     }
    15     int mid=(l+r)>>1;
    16     build(l,mid,rt<<1);
    17     build(mid+1,r,rt<<1|1);
    18     val[rt]=val[rt<<1]+val[rt<<1|1];
    19 }
    20 
    21 void pushdown(int rt,int l,int r,int mid){
    22     lazy[rt<<1]=lazy[rt];
    23     val[rt<<1]=(mid-l+1)*lazy[rt];
    24     lazy[rt<<1|1]=lazy[rt];
    25     val[rt<<1|1]=(r-mid)*lazy[rt];
    26     lazy[rt]=0;
    27 }
    28 
    29 void update(int l,int r,int L,int R,int rt,int c){
    30     if(L<=l&&r<=R) {
    31         lazy[rt]=c;
    32         val[rt]=(r-l+1)*c;
    33         return ;
    34     }
    35     int mid=(l+r)>>1;
    36     if(lazy[rt]) pushdown(rt,l,r,mid);
    37     if(L<=mid)
    38         update(l,mid,L,R,rt<<1,c);
    39     if(mid<R)
    40         update(mid+1,r,L,R,rt<<1|1,c);
    41     val[rt]=val[rt<<1]+val[rt<<1|1];
    42 }
    43 
    44 void sum(int l,int r,int rt){
    45     if(l==r) return ;
    46     int mid=(l+r)>>1;
    47     if(lazy[rt]) pushdown(rt,l,r,mid);
    48     sum(l,mid,rt<<1);
    49     sum(mid+1,r,rt<<1|1);
    50     val[rt]=val[rt<<1]+val[rt<<1|1];
    51 }
    52 
    53 int main(){
    54     int t,l=0;
    55     scanf("%d",&t);
    56     while(l<t){
    57         int n,q;
    58         scanf("%d",&n);
    59         build(1,n,1);
    60         scanf("%d",&q);
    61         for(int i=0;i<q;i++){
    62             int a,b,c;
    63             scanf("%d%d%d",&a,&b,&c);
    64             update(1,n,a,b,1,c);
    65         }
    66         sum(1,n,1);
    67         printf("Case %d: The total value of the hook is %d.
    ",++l,val[1]);
    68     }
    69     return 0;
    70 }
    View Code

    似乎最后的sum()不需要的,然而影响也不大

    区间更新,lazy标记,简单题

    最后抛个链接,欢迎入坑,http://www.bilibili.com/video/av9919498

  • 相关阅读:
    说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
    利用CSS3实现页面淡入动画特效
    ajax
    jQuery弹性滑动导航菜单实现思路及代码
    angular 管理后台
    jq简单选项卡
    按钮60秒倒计时
    jq倒计时
    angular ui-route
    flex弹性布局
  • 原文地址:https://www.cnblogs.com/lintanxi/p/6782765.html
Copyright © 2011-2022 走看看