线段树专题—HDU1698 Just a Hook
题意:t组数据,给一个n。m表示n长度的钩和m次操作。初始钩子的每单位长度的价值为1,接下来输入 x,y,k 的操作把钩子[x,y]区间的价值替换为k,求m次操作后钩子的价值为多少
分析:成段替换。最后仅仅要求第一个区间就能够了,使用不用写query询问
代码:
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <algorithm>
- #include<vector>
- #pragma comment(linker,"/STACK:1024000000,1024000000")
- using namespace std;
- const int maxn = 1e5+5;
- int sum[maxn*4];
- int lazy[maxn*4];
- void up(int rt){
- sum[rt]=sum[rt<<1]+sum[rt<<1|1];
- }
- void down(int l,int r,int rt){
- if(!lazy[rt]) return;
- int mid=(l+r)>>1;
- lazy[rt<<1]=lazy[rt];lazy[rt<<1|1]=lazy[rt];
- sum[rt<<1]=lazy[rt]*(mid-l+1);
- sum[rt<<1|1]=lazy[rt]*(r-mid);
- lazy[rt]=0;
- }
- void build(int l,int r,int rt){
- sum[rt]=lazy[rt]=0;
- if(l==r){
- sum[rt]=1;
- return;
- }
- int mid=(l+r)>>1;
- build(l,mid,rt<<1);
- build(mid+1,r,rt<<1|1);
- up(rt);
- }
- void update(int L,int R,int k,int l,int r,int rt){
- if(L<=l&&r<=R){
- sum[rt]=k*(r-l+1);
- lazy[rt]=k;
- return;
- }
- down(l,r,rt);
- int mid=(l+r)>>1;
- if(L<=mid) update(L,R,k,l,mid,rt<<1);
- if(R>mid) update(L,R,k,mid+1,r,rt<<1|1);
- up(rt);
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- for(int cas=1;cas<=t;cas++){
- int n,m;
- scanf("%d%d",&n,&m);
- build(1,n,1);
- while(m--){
- int x,y,k;
- scanf("%d%d%d",&x,&y,&k);
- update(x,y,k,1,n,1);
- }
- printf("Case %d: The total value of the hook is %d.\n",cas,sum[1]);
- }
- }
线段树专题—HDU1698 Just a Hook的更多相关文章
- zkw线段树专题
题目来自大神博客的线段树专题 http://www.notonlysuccess.com/index.php/segment-tree-complete/ hdu1166 敌兵布阵题意:O(-1)思路 ...
- vj线段树专题
vj线段树专题题解 单点更新模板 void build(int x,int l,int r){//sum[x]控制l-r区域 if(l==r){Sum[x]=num[l];return ;} int ...
- Kuangbin 带你飞-线段树专题 题解
HDU 1166 敌兵布阵 单调更新区间查询和 #include <map> #include <set> #include <list> #include < ...
- 2018 UESTC 线段树专题
A - 一棵简单的线段树 A[1...n]初始全为0. 1. 给两个数p 和 x(1≤p≤n),单点更新 A[p] <- x 2. 给两个数L和R (1≤L<R≤n), L到R区间里这几 ...
- 线段树专题—ZOJ1610 Count the Colors
题意:给一个n,代表n次操作,接下来每次操作表示把[l.r]区间的线段涂成k的颜色当中,l,r,k的范围都是0到8000 分析:事实上就是拿线段树维护一段区间的颜色,整体用到的是线段树的区间更新把,可 ...
- 线段树专题 POJ3468 A Simple Problem with Integers
题意:n个点.m个操作.两种操作类型.C X Y K 表示区间[x,y]上每一个点值加k.Q X Y 求区间[x,y]的和 分析:线段树区间求和,裸模板 注意:结果会超int,要用long long ...
- HDU 1698 (线段树 区间更新) Just a Hook
有m个操作,每个操作 X Y Z是将区间[X, Y]中的所有的数全部变为Z,最后询问整个区间所有数之和是多少. 区间更新有一个懒惰标记,set[o] = v,表示这个区间所有的数都是v,只有这个区间被 ...
- 线段树专题—ZOJ1610 Count the Colors(涂区间,直接tag标记)
Painting some colored segments on a line, some previously painted segments may be covered by some th ...
- 线段树专题2-(加强版线段树-可持续化线段树)主席树 orz! ------用于解决区间第k大的问题----xdoj-1216
poj-2104(区间第K大问题) #include <iostream> #include <algorithm> #include <cstdio> #incl ...
随机推荐
- Android Developer -- Bluetooth篇 概述
Bluetooth 安卓平台支持蓝牙网络协议栈,它允许设备与其他蓝牙设备进行无线交换数据.应用程序框架通过安卓蓝牙APIs提供访问蓝牙功能.这些APIs使应用程序通过无线连接到其他蓝牙设备,使点对点和 ...
- Handler嵌套--可以
package com.example.handlernestdemo; import android.support.v7.app.ActionBarActivity; import android ...
- MySQL索引,MySQL中索引的限制?
MySQL中索引的限制: 1.MyISAM存储引擎引键的长度综合不能超过1000字节: 2.BLOB和TEXT类型的列只能创建前缀索引: 3.MySQL目前不支持函数索引: 4.使用!= 或者< ...
- 【转】蘑菇街面试经历(已拿到offer)
最近正好接到了蘑菇街的面试通知,顿时很欣喜,还在等通知,不知结果如何. 首先安排了一次电话面试,大体内容时现在工作的一个状态,主要负责的项目功能,模块,以及架构例如,高并发网站优化,负载均衡等等,还会 ...
- kubernetes1.5.2--部署dashboard服务
本文基于kubernetes 1.5.2版本编写 使用http方式访问api server的部署 cat dashboard-controller.yaml apiVersion: extension ...
- linux下rar包的解压方法
linux下rar包的解压方法 学习了:https://blog.csdn.net/yonggeit/article/details/72190246?utm_source=itdadao&u ...
- java 中文转Unicode 以及 Unicode转中文
package com.sun; public class Snippet { public static void main(String[] args) { String cn ...
- Angular 学习笔记——自定义标签
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- ejs - 初试
官方API: https://www.npmjs.com/package/ejs - 模板引擎 ejs文件(和普通html文件没什么区别,只是多增加了变量) <!DOCTYPE html> ...
- htmlspecialchars_decode
htmlspecialchars_decode htmlspecialchars_decode - 将特殊的 HTML 实体转换回普通字符 htmlspecialchars - 将特殊字符转换为 ...