hdoj1698【线段树Lazy操作】
区间更新lazy操作一发。
#include<cstdio>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
/*
DOTA中屠夫的钩子有N个链子组成,每个链子可有金,银,铜,三种材质做成,
铜链价值1,银价值2,金价值3,
先对钩子进行Q次的更新操作,
求出更新完后钩子的价值。
*/
const int N=100007;
struct st{
int left,right;
int sum;
int val;
};
st q[N*4];
int n,m;
void build(int num,int L,int R)
{
q[num].left=L;
q[num].right=R;
if(L==R)
{
q[num].sum=1;
q[num].val=0;
return;
}
build(2*num,L,(L+R)/2);
build(2*num+1,(L+R)/2+1,R);
q[num].sum=q[2*num].sum+q[2*num+1].sum;
q[num].val=0;
}
void update(int num,int s,int t,int c)
{
if(q[num].left>=s&&q[num].right<=t)
{
q[num].val=c;
q[num].sum=c*(q[num].right-q[num].left+1);
return;
}
if(q[num].val)
{
q[2*num].val=q[num].val;
q[2*num].sum=q[num].val*(q[2*num].right-q[2*num].left+1);
q[2*num+1].val=q[num].val;
q[2*num+1].sum=q[num].val*(q[2*num+1].right-q[2*num+1].left+1);
q[num].val=0;
}
int mid=(q[num].left+q[num].right)/2;
if(mid>=t)
update(2*num,s,t,c);
else if(mid<s)
update(2*num+1,s,t,c);
else
{
update(2*num,s,mid,c);
update(2*num+1,mid+1,t,c);
}
q[num].sum=q[2*num+1].sum+q[2*num].sum;
}
int main()
{
int t;
scanf("%d",&t);
int cas=1;
while(t--)
{
scanf("%d",&n);
build(1,1,n);
scanf("%d",&m);
while(m--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
update(1,a,b,c);
}
printf("Case %d: The total value of the hook is %d.\n",cas++,q[1].sum);
}
return 0;
}
hdoj1698【线段树Lazy操作】的更多相关文章
- HDU 3954 Level up(多颗线段树+lazy操作)
又是一开始觉得的水题,结果GG了好久的东西... 题意是给你n个英雄,每个英雄开始为1级经验为0,最多可以升到k级并且经验一直叠加,每一级都有一个经验值上限,达到就升级.接着给你两种操作:W li r ...
- poj 3237 树链剖分模板(用到线段树lazy操作)
/* 本体在spoj375的基础上加了一些操作,用到线段树的lazy操作模板类型 */ #include<stdio.h> #include<string.h> #includ ...
- POJ3468【线段树lazy操作】
上午理论AC,打到现在快吐了... 一个那么**Lazy操作打成这样,query操作和update操作都有问题,妈蛋,发现是mid<=s+1-真是蠢到家,明明是mid+1<=s卧槽连左和右 ...
- 分块+lazy 或者 线段树+lazy Codeforces Round #254 (Div. 2) E
E. DZY Loves Colors time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 线段树+lazy标记 2019年8月10日计蒜客联盟周赛 C.小A的题
题目链接:https://nanti.jisuanke.com/t/40852 题意:给定一个01串s,进行m次操作,|s|<=1e6,m<=5e5 操作有两种 l r 0,区间[l,r] ...
- POJ 2777——线段树Lazy的重要性
POJ 2777 Count Color --线段树Lazy的重要性 原题 链接:http://poj.org/problem?id=2777 Count Color Time Limit: 1000 ...
- JuQueen(线段树 lazy)
JuQueen Time Limit: 5 Sec Memory Limit: 512 MB Description Input Output Sample Input 10 10 5 state ...
- hdu 2871 线段树(各种操作)
Memory Control Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 数据结构--线段树--lazy延迟操作
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 53749 ...
随机推荐
- apk解包——修改后缀为zip
将apk修改后缀为zip后,可直接解包查看资源文件
- jquery 获取下拉框 某个text='xxx'的option的属性 非选中 如何获得select被选中option的value和text和......
jquery 获取下拉框 某个text='xxx'的option的属性 非选中 5 jquery 获取下拉框 text='1'的 option 的value 属性值 我写的var t= $(" ...
- C#面向对象 结构体和类的应用
- SQL server 数据存储过程
创建视图
- jQuery源代码框架思路
開始计划时间读源代码,第一节jQuery框架阅读思路整理 (function(){ jQuery = function(){}; jQuery一些变量和函数和给jQuery对象加入一些方法和属性 ex ...
- Codefoces 432 C. Prime Swaps(水)
思路:从前往后想将1调整好,在调整2....这样平均每次有五次机会调整,并且有相当一部分可能都用不到五次,能够一试.ac 代码: #include<iostream> #include&l ...
- return和exit
return从当前函数返回而exit结束正在运行的程序 示例: [wangml@iZwz976helaylvgqok97prZ testForC]$ ./exit.test q [wangml@iZw ...
- 关于Android滑动冲突的解决方法(二)
之前的一遍学习笔记主要就Android滑动冲突中,在不同方向的滑动所造成冲突进行了了解,这样的冲突非常easy理解,当然也非常easy解决.今天,就同方向的滑动所造成的冲突进行一下了解,这里就先以垂直 ...
- String、StringBilder和StringBuffer之间的区别
1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String 2.String <(StringBuffer,StringBuild ...
- spi flash 操作
W25Q16V 是华邦出的一颗 spi flash. 25系列是比较通用的一个系列. 后面的数字 16 跟容量有关, 16 表示 16Mbits, 相当于 2MB. 与此类似的还有 W25Q128V ...