HDU1698

#include <bits/stdc++.h>
using namespace std;
#define Maxn 1001000*4
struct Node{
    int lt,rt,val;
}A[Maxn];
int j = 1;
void Build(int i,int lt,int rt){
    A[i].lt = lt;
    A[i].rt = rt;
    A[i].val = 1;
    if( lt == rt ){
        return ;
    }
    int mid = (lt+rt) >> 1;
    Build(i<<1,lt,mid);
    Build(i<<1|1,mid+1,rt);
}

void update(int i,int lt,int rt,int val){
    if( A[i].val == val ){
        return ;
    }
    if( A[i].lt == lt && A[i].rt == rt ){
        A[i].val = val;
        return ;
    }
    if( A[i].val != -1 ){
        A[i<<1].val = A[i<<1|1].val = A[i].val;
        A[i].val = -1;
    }
    if( rt <= A[i<<1].rt ){
        update(i<<1,lt,rt,val);
    }else if( lt >= A[i<<1|1].lt ){
        update(i<<1|1,lt,rt,val);
    }else{
        update(i<<1,lt,A[i<<1].rt,val);
        update(i<<1|1,A[i<<1|1].lt,rt,val);
    }
}

int find(int i){
    if( A[i].val != -1 ){
        return ( (A[i].rt-A[i].lt+1)*A[i].val);
    }else{
        return ( find(i<<1) + find(i<<1|1) );
    }
}

int main(){
    int T,N,a,b,c;
    cin >> T;
    while(T--){
        scanf("%d",&N);
        Build(1,1,N);
        int n;
        scanf("%d",&n);
        while(n--){
            scanf("%d%d%d",&a,&b,&c);
            update(1,a,b,c);
        }
        printf("Case %d: The total value of the hook is %d.\n",j++,find(1));
    }
}

  

hdu1698(线段树的区间替换)的更多相关文章

  1. hdu1698线段树的区间更新区间查询

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  2. HDU1698 线段树(区间更新区间查询)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...

  3. 1698-Just a Hook 线段树(区间替换)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. hdu1698 线段树(区间更新~将区间[x,y]的值替换为z)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. hdu1698 线段树区间更新

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. Codeforces Round #222 (Div. 1) D. Developing Game 线段树有效区间合并

    D. Developing Game   Pavel is going to make a game of his dream. However, he knows that he can't mak ...

  7. hiho一下20周 线段树的区间修改

    线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题改了改,又出给了 ...

  8. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  9. poj 3468:A Simple Problem with Integers(线段树,区间修改求和)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 58269   ...

随机推荐

  1. 使用win8.1 x64 office2010 php 使用 pdo_odbc 连接excel失败的问题

    public function init($filePath){ $dbq = iconv('UTF-8',"GBK",BASEPATH.'../'.$filePath); $ds ...

  2. js传带参数的函数

    字符串: setTimeout('pageScroll(4)',100);

  3. 用PHP Session和Javascript实现文件上传进度条,处理进度条

    参考http://www.pureweber.com/article/php-upload-progress/ php显示处理进度条http://blog.csdn.net/boabc2304/art ...

  4. tree命令

    tree命令以树状图列出目录的内容. 1.语法 tree(选项)(参数) 2.选项 -a:显示所有文件和目录: -A:使用ASNI绘图字符显示树状图而非以ASCII字符组合: -C:在文件和目录清单加 ...

  5. ajax error函数

    老是去百度 还是自己记下来吧 $.ajax({ url: '/AJAX请求的URL', success: function (data) { alert(data); }, error: functi ...

  6. iOS开发之本地化

    一.简介 * 使用本地化功能,可以轻松地将应用程序翻译成多种语言,甚至可以翻译成同一语言的多种方言 * 如果要添加本地化功能,需要为每种支持的语言创建一个子目录,称为”本地化文件夹”,通常使用.lpr ...

  7. Re-installation failed due to different application signatures./package name has exist

    http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html

  8. [原博客] POI系列(2)

    正规.严谨.精妙. -POI bzoj 1098 : [POI2007]办公楼biu 如果把互相有手机号的建边得到一个无向图,那么这个图的补图的连通分量个数就是答案了.因为互相没手机号的必然在同一个连 ...

  9. 关于MATLAB中的tic toc的问题

    关于MATLAB中的tic toc的问题 其一) MATLAB实际单位时间计时函数的具体应用,在编写程序时,经常需要获知代码的执行实际时间,这就需要在程序中用到计时函数,matlab中提供了以下三种方 ...

  10. 关于java IO 过程当中同时读写的问题

    今天在写一个linux的java守护进程的时候,无意间就用到了java同时读写的功能. 看错误代码: package cn.sunchuanzhen.main; import java.io.Buff ...