HDU 1698 Just a Hook (线段树区间修改+区间查询)
题目链接: 传送门
题意:Pudge对装备钩子进行若干次的强化,强化分为三种分别对应的价值是1,2,3,在经历过若干次操作后,输出钩子对应的总价值,每次强化都是对钩子进行区间修改
解题思路:在明白了题意后,我们的线段树只需要维护一个区间的和值,然后每次操作的时候,lazy数组标记每次更改的区间,在查询的时候pushdown一下,注意的是在updata的时候,a[k]表示的是一个区间的值,所以是\((r-l+1)\times v\),最后记得多组输入(不然会Wa
Code:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 400400;
int a[maxn],lazy[maxn];
void pushdown(int k,int l,int r)
{if(lazy[k]){lazy[k<<1]=lazy[k];lazy[k<<1|1]=lazy[k];int mid=(l+r)>>1;a[k<<1]=(mid-l+1)*lazy[k];a[k<<1|1]=(r-mid)*lazy[k];lazy[k]=0;}
}
void build(int k,int l,int r)
{lazy[k]=0;if(l==r){a[k]=1;return ;}int mid=(l+r)>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);a[k]=a[k<<1]+a[k<<1|1];
}
void update(int k,int l,int r,int x,int y,int v)
{if(x<=l&&y>=r){lazy[k]=v;a[k]=(r-l+1)*v;return;}pushdown(k,l,r);int mid=(l+r)>>1;if(x<=mid) update(k<<1,l,mid,x,y,v);if(y>mid) update(k<<1|1,mid+1,r,x,y,v);a[k]=a[k<<1]+a[k<<1|1];
}
int query(int k,int l,int r,int x,int y)
{if(x<=l&&y>=r) return a[k];pushdown(k,l,r);int mid=(l+r)>>1;int ans=0;if(x<=mid) ans+=query(k<<1,l,mid,x,y);if(y>mid) ans+=query(k<<1|1,mid+1,r,x,y);return ans;
}
int main(void)
{int n,m,x,y,k,t,i,pt=1;scanf("%d",&t);while(t--){memset(lazy,0,sizeof lazy);scanf("%d%d",&n,&m);build(1,1,n);for(i=0;i<m;i++){scanf("%d%d%d",&x,&y,&k);update(1,1,n,x,y,k);}printf("Case %d: The total value of the hook is %d.\n",pt++,query(1,1,n,1,n));}return 0;
}
HDU 1698 Just a Hook (线段树区间修改+区间查询)相关推荐
- hdu 1698 Just a Hook 线段树区间更新
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 Let us number the consecutive metallic sticks of ...
- hdu 1698 Just a Hook(线段树区间更新·经典)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1698 数据:case,n,q,q行x,y,z.在长度为n的hook上进行q次区间更新,把它们的价值改变.最 ...
- python:线段树区间修改 + 区间查询 模板 + 坑点总结
from functools import reduceclass SegTree:'''支持增量更新,覆盖更新,序列更新,任意RMQ操作基于二叉树实现初始化:O(1)增量更新或覆盖更新的单次操作复杂 ...
- tzoj3315 买火车票(线段树+区间修改+区间查询)
时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 描述 Byteotian州铁道部决定赶上时代,为此他们引进了城市联网.假设城市联网顺次连接着n 个市从1 ...
- HDU 1698 Just a Hook 线段树
区间更新中 lazy标记的pushdown操作 风格还是傻崽的...感觉很好用... /********************* Template ************************/ ...
- hdu 4902 Nice boat(线段树区间修改,输出最终序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 Problem Description There is an old country and ...
- 【模板】线段树区间修改
区间修改: 区间修改过程类似于区间询问,例如将[ul, ur]内的所有元素都加上v,则进行如下操作: 当当前区间被区间[ul, ur]所包含时, 当前的节点值加上区间长度(r - l + 1)乘以v ...
- hdu 5692 Snacks(dfs序+线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5692 解题思路:这道题是树节点的点权更新,而且涉及到子树,常用的思路是利用dfs序,用线段树来对区间进 ...
- hdu 1698 Just a Hook(线段树区间修改)
传送门:Just a Hook Problem Description In the game of DotA, Pudge's meat hook is actually the most horr ...
最新文章
- python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据
- 通过案例学功能 自定义监控功能初探
- 和至少为k的最短子数组 python_LeetCode 862. 和至少为 K 的最短子数组
- 程序员致富的若干方法探讨
- 调用startActivityForResult后直接调用onActivityResult
- WIFI 基本理论-2017
- 谈谈你对计算思维和python生态的理解_计算思维的的理解及重要性
- Py之itchat:python库之itchat的简介、安装、使用方法之详细攻略
- 领扣简单版--两数之和(Two Sum)
- java实体null值显示_java反射实现前端接收实体对象,去除“null”字符串(示例代码)...
- TextView属性的静态使用与动态使用
- 数据预处理之数据描述
- 天堂2单机版如何架设mysql_天堂2单机版 L2J-som-rotm 安装全过程及常用工具 一步到位...
- EXCEL斜线表头三种画法
- 如何规范小开发公司的测试流程。?
- cmwap与cmnet的区别
- 开漏(open drain)和开集(open colletor)
- 淘宝、天猫、1688、京东等25个平台的API数据接口
- 1Password mac使用指南
- 采集腾讯QQ国内+国际版的国家及地区库
热门文章
- 梯度下降法,最速下降法,牛顿法,Levenberg-Marquardt 修正,共轭方向法,共轭梯度法
- Gym100923H Por Costel and the Match
- Photoshop怎么实现图片局部马赛克
- 【Android学习】三种布局include /、merge /、ViewStub /
- JAVA魔法堂:折腾Mybatis操作SQLite的SQLException:NYI异常
- PowerPoint 蜜蜂跳“8”字舞实例
- 四种以太网数据包详解
- Shell中通过机器人发送钉钉群消息
- day31-python阶段性复习五
- LintCode2016年8月8日算法比赛----子树