题目链接: 传送门

题意: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 (线段树区间修改+区间查询)相关推荐

  1. hdu 1698 Just a Hook 线段树区间更新

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 Let us number the consecutive metallic sticks of ...

  2. hdu 1698 Just a Hook(线段树区间更新·经典)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1698 数据:case,n,q,q行x,y,z.在长度为n的hook上进行q次区间更新,把它们的价值改变.最 ...

  3. python:线段树区间修改 + 区间查询 模板 + 坑点总结

    from functools import reduceclass SegTree:'''支持增量更新,覆盖更新,序列更新,任意RMQ操作基于二叉树实现初始化:O(1)增量更新或覆盖更新的单次操作复杂 ...

  4. tzoj3315 买火车票(线段树+区间修改+区间查询)

    时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte 描述 Byteotian州铁道部决定赶上时代,为此他们引进了城市联网.假设城市联网顺次连接着n 个市从1 ...

  5. HDU 1698 Just a Hook 线段树

    区间更新中 lazy标记的pushdown操作 风格还是傻崽的...感觉很好用... /********************* Template ************************/ ...

  6. hdu 4902 Nice boat(线段树区间修改,输出最终序列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 Problem Description There is an old country and ...

  7. 【模板】线段树区间修改

    区间修改: 区间修改过程类似于区间询问,例如将[ul, ur]内的所有元素都加上v,则进行如下操作: 当当前区间被区间[ul, ur]所包含时, 当前的节点值加上区间长度(r - l  + 1)乘以v ...

  8. hdu 5692 Snacks(dfs序+线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5692 解题思路:这道题是树节点的点权更新,而且涉及到子树,常用的思路是利用dfs序,用线段树来对区间进 ...

  9. hdu 1698 Just a Hook(线段树区间修改)

    传送门:Just a Hook Problem Description In the game of DotA, Pudge's meat hook is actually the most horr ...

最新文章

  1. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据
  2. 通过案例学功能 自定义监控功能初探
  3. 和至少为k的最短子数组 python_LeetCode 862. 和至少为 K 的最短子数组
  4. 程序员致富的若干方法探讨
  5. 调用startActivityForResult后直接调用onActivityResult
  6. WIFI 基本理论-2017
  7. 谈谈你对计算思维和python生态的理解_计算思维的的理解及重要性
  8. Py之itchat:python库之itchat的简介、安装、使用方法之详细攻略
  9. 领扣简单版--两数之和(Two Sum)
  10. java实体null值显示_java反射实现前端接收实体对象,去除“null”字符串(示例代码)...
  11. TextView属性的静态使用与动态使用
  12. 数据预处理之数据描述
  13. 天堂2单机版如何架设mysql_天堂2单机版 L2J-som-rotm 安装全过程及常用工具 一步到位...
  14. EXCEL斜线表头三种画法
  15. 如何规范小开发公司的测试流程。?
  16. cmwap与cmnet的区别
  17. 开漏(open drain)和开集(open colletor)
  18. 淘宝、天猫、1688、京东等25个平台的API数据接口
  19. 1Password mac使用指南
  20. 采集腾讯QQ国内+国际版的国家及地区库

热门文章

  1. 梯度下降法,最速下降法,牛顿法,Levenberg-Marquardt 修正,共轭方向法,共轭梯度法
  2. Gym100923H Por Costel and the Match
  3. Photoshop怎么实现图片局部马赛克
  4. 【Android学习】三种布局include /、merge /、ViewStub /
  5. JAVA魔法堂:折腾Mybatis操作SQLite的SQLException:NYI异常
  6. PowerPoint 蜜蜂跳“8”字舞实例
  7. 四种以太网数据包详解
  8. Shell中通过机器人发送钉钉群消息
  9. day31-python阶段性复习五
  10. LintCode2016年8月8日算法比赛----子树