题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698

线段树+lazy操作     线段树是从上到下开始建树,树状数组是从下到上建树....

代码:

 #include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <iostream>
#include <ctype.h>
#include <iomanip>
#include <queue>
#include <stdlib.h>
using namespace std; #define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1 const int maxn=;
int n;
int s[maxn<<],sum[maxn<<]; void pushup(int rt) //
{
sum[rt] = sum[rt << ] + sum[rt << |];
} void pushdown(int rt,int m) //下标为n,这段区间有m个数
{
if( s[rt] ){
s[ rt<< ]=s[ rt<<| ]=s[ rt ];
sum[ rt<< ]=(m-m/)*s[ rt ];
sum[ rt<<| ]=(m/)*s[ rt ];
s[ rt ]=;
}
} void build( int l,int r,int rt ) //建树
{
sum[ rt ]=;
s[ rt ]=;
if( l==r ){
return ;
}
int mid;
mid=(l+r)>>;
build( lson );
build( rson );
pushup( rt ); } void update(int a,int b,int c,int l,int r,int rt) //更新
{
if(a<=l && b>=r){
s[ rt ]=c;
sum[ rt ]=(r-l+)*c;
return;
}
pushdown( rt,r-l+ );
int mid=(l+r)>>;
if( a<=mid )
update( a,b,c,lson );
if( b>mid )
update( a,b,c,rson );
pushup( rt );
return ;
} int query( int a,int b,int l,int r,int rt) //查询
{
if(a==l && b==r){
return sum[ rt ];
}
int mid=(l+r)>>;
int t1,t2;
if( b<=mid )
return query( a,b,lson );
else if( a>mid )
return query( a,b,rson );
else
return query( a,mid,lson )+query( mid+,b,rson );
} int main()
{
int t;
scanf("%d",&t);
for(int i=;i<=t;i++){
scanf("%d",&n);
build( ,n, );
int m;
scanf("%d",&m);
int a,b,c;
while(m--){
scanf("%d%d%d",&a,&b,&c);
update( a,b,c,,n, );
//for( int j=1;j<=25;j++ )printf("j:%d %d\n",j,sum[j]);
}
printf("Case %d: The total value of the hook is %d.\n",i,sum[ ]/*query( 1,n,1,n,1 )*/ );
}
return ; }

hdu Just a Hook的更多相关文章

  1. hdu just a hook(线段树,区间修改)

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

  2. Just a Hook HDU - 1698Just a Hook HDU - 1698 线段树区间替换

    #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> us ...

  3. HDU 1698 & UESTC 1228 Just a hook

    算是线段树中的一道水题了,必须用到懒操作,否则会超时.或者也可以刚开始不计算和,只更新节点,最后算整个线段的颜色和. 1.懒操作法 /* 908ms 3448KB in HDU OJ*/ #inclu ...

  4. HDU 1698 Just a Hook (线段树区间更新)

    题目链接 题意 : 一个有n段长的金属棍,开始都涂上铜,分段涂成别的,金的值是3,银的值是2,铜的值是1,然后问你最后这n段总共的值是多少. 思路 : 线段树的区间更新.可以理解为线段树成段更新的模板 ...

  5. hdu 1689 Just a Hook

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 Just a Hook Time Limit: 4000/2000 MS (Java/Others)    ...

  6. HDU 1698 Just a Hook(线段树成段更新)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1698 题目: Problem Description   In the game of DotA, P ...

  7. (线段树)Just a Hook -- hdu -- 1689

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1698 思路: 我的想法很简单,像上一题一样从后面向前面来算,前面已经覆盖的,后面自然不能再来计算了,具体 ...

  8. HDU 1698 just a hook 线段树,区间定值,求和

    Just a Hook Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1 ...

  9. HDU 1698 Just a Hook(线段树:区间更新)

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 题意:给出1~n的数,每个数初始为1,每次改变[a,b]的值,最后求1~n的值之和. 思路: 区间更新题目 ...

随机推荐

  1. UVA 11388-GCD LCM(数学)

    I I U C   O N L I N E   C  Problem D: GCD LCM Input: standard input Output: standard output The GCD ...

  2. tolower (Function)

    this is a function that Convert uppercase letter to lowercase Converts c to its lowercase equivalent ...

  3. Unix编程艺术札记版本

    这本书是一位面试官告诉我,.非常感谢他的忠告.面试的说明.我写后认为,足.一方面是面试的技巧.另一方面就是学习的方法. 阅读这本书非常享受,加上之前的积累,一些疑惑,另一些基础的不足,在这本书里找 ...

  4. MongoDB学习笔记-认识MongoDB

    学习参考地址 http://www.runoob.com/mongodb NoSql 流行的数据库Oracle,SqlServer,MySql为关系性数据库,相对的,也有非关系性数据库,统称为NoSq ...

  5. myeclipse如何恢复已删除的文件和代码

    这是一篇文章分享秘诀:myeclipse恢复意外删除的文件和代码 [ 恢复误删文件 ] 今天在写代码的时候,不小心把一个包给删除了,然后这个包下全部的文件都没了,相信非常多人都有类似的经历. 幸好my ...

  6. 对比Windows 8模拟器(Simulator)和Windows Phone仿真器(Emulator)

    原文:对比Windows 8模拟器(Simulator)和Windows Phone仿真器(Emulator) 从事移动应用开发,经常会用到模拟器(Simulator)和仿真器(Emulator),本 ...

  7. Spring.Net控制翻转、依赖注入、面向切面编程

    Spring.Net快速入门:控制翻转.依赖注入.面向切面编程 Spring.Net主要功能: 1.IoC:控制翻转(Inversion of Control)  理解成抽象工厂翻转控制:就是创建对象 ...

  8. 从Java到C++——从union到VARIANT与CComVariant的深层剖析

    我第一次用VARIANT和CComVariant的时候全然不明确它是怎么回事,为它什么数据类型都能够存放.什么数据都能够被能够初始化?里面究竟是怎么实现的?感觉又奇妙又迷惑!我们在上一节中讲了unio ...

  9. GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理(转)

    如何获取图片对应的base64字符串呢? 1:使用代码获取: 运行下面代码 var reader = new FileReader(), htmlImage; reader.onload = func ...

  10. MemoryBarrier,Volatile

    使用MemoryBarrier,Volatile进行同步 上一节介绍了使用信号量进行同步,本节主要介绍一些非阻塞同步的方法.本节主要介绍MemoryBarrier,volatile,Interlock ...