Just a Hook HDU - 1698Just a Hook HDU - 1698 线段树区间替换
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- typedef long long ll;
- const int N=1e5+;
- struct node{
- int l,r;
- int sum;
- int add;
- }tr[N*];
- void pushdown(int root)
- {
- if (tr[root].add)
- {
- tr[root<<].add=tr[root].add;
- tr[root<<|].add=tr[root].add;
- int mid=(tr[root].l+tr[root].r)/;
- tr[root<<].sum=tr[root].add*(mid-tr[root].l+);
- tr[root<<|].sum=tr[root].add*(tr[root].r-mid);
- tr[root].add=;
- }
- }
- void pushup(int u)
- {
- tr[u].sum=tr[u<<].sum+tr[u<<|].sum;
- }
- void build(int root, int l, int r)
- {
- tr[root].l=l;
- tr[root].r=r;
- tr[root].add=;
- tr[root].sum=;
- if(l==r)
- {
- tr[root].sum = ;
- return ;
- }
- int mid=l+r>>;
- build(root<<,l,mid);
- build(root<<|,mid+,r);
- pushup(root);
- }
- void update(int root,int ql,int qr,int c)
- {
- if (ql>tr[root].r||qr<tr[root].l)
- return;
- if (ql<=tr[root].l&&tr[root].r<= qr)
- {
- tr[root].sum=(tr[root].r-tr[root].l+)*c;
- tr[root].add=c;
- }
- else
- {
- pushdown(root);
- int mid=tr[root].l+tr[root].r>>;
- update(root<<,ql,qr,c);
- update(root<<|,ql,qr,c);
- pushup(root);
- }
- }
- int main()
- {
- int t,cnt=;
- scanf("%d",&t);
- while(t--)
- {
- int n,q;
- scanf("%d%d",&n,&q);
- build(,,n);
- while(q--)
- {
- int l,r,op;
- scanf("%d%d%d",&l,&r,&op);
- update(,l,r,op);
- }
- printf("Case %d: The total value of the hook is %d.\n", ++cnt, tr[].sum);
- }
- }
Just a Hook HDU - 1698Just a Hook HDU - 1698 线段树区间替换的更多相关文章
- HDU.1689 Just a Hook (线段树 区间替换 区间总和)
HDU.1689 Just a Hook (线段树 区间替换 区间总和) 题意分析 一开始叶子节点均为1,操作为将[L,R]区间全部替换成C,求总区间[1,N]和 线段树维护区间和 . 建树的时候初始 ...
- HDU 1698 Just a Hook(线段树 区间替换)
Just a Hook [题目链接]Just a Hook [题目类型]线段树 区间替换 &题解: 线段树 区间替换 和区间求和 模板题 只不过不需要查询 题里只问了全部区间的和,所以seg[ ...
- E - Just a Hook HDU - 1698 线段树区间修改区间和模版题
题意 给出一段初始化全为1的区间 后面可以一段一段更改成 1 或 2 或3 问最后整段区间的和是多少 思路:标准线段树区间和模版题 #include<cstdio> #include& ...
- HDU 1698 线段树 区间更新求和
一开始这条链子全都是1 #include<stdio.h> #include<string.h> #include<algorithm> #include<m ...
- hdu 3911 Black And White (线段树 区间合并)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3911 题意: 给你一段01序列,有两个操作: 1.区间异或,2.询问区间最长的连续的1得长度 思路: ...
- hdu 1698 线段树 区间更新 区间求和
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 1698 Just a Hook(线段树区间替换)
题目地址:pid=1698">HDU 1698 区间替换裸题.相同利用lazy延迟标记数组,这里仅仅是当lazy下放的时候把以下的lazy也所有改成lazy就好了. 代码例如以下: # ...
- HDU 1698 Just a Hook(线段树区间替换)
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- [HDU] 1698 Just a Hook [线段树区间替换]
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
随机推荐
- 实验21:IPv6
九.IPv6 1.IPv6(RIP) 实验目的:熟悉IPv6的配置,并经过动态路由协议RIP,使三台路由器相互通讯设备需求:3640三台实验过程: xdbr_R1#sh runipv6 unicast ...
- mysql笔记(暂时)
2018-05-28 create table cms_user(id int key auto_increment,username varchar(20),password varchar(20) ...
- hdu 1159求最长公共子序列
题目描述:给出两个字符串,求两个字符串的公共子序列(不是公共子串,不要求连续,但要符合在原字符串中的顺序) in: abcfbc abfcab programming contest abcd mnp ...
- meta 的作用 搜集
Meta标签中的format-detection属性及含义 format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的forma ...
- 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- JDK14都要问世了,你还在用JDK8吗
Java开发工具包(JDK)14已进入发布候选阶段,总体功能基本已确定.计划中的标准Java升级将具有新功能,例如JDK Flight Recorder事件流,模式匹配和开关表达式. JDK 14计划 ...
- 04-Spring01-IOC
今日知识 1. Spring IOC控制反转(Inverse of control) 2. Spring DI依赖注入(Dependency Injection ) Spring 1. 概念:简单来说 ...
- SqlServer触发器的基础知识
触发器的基础知识:create trigger tr_name on table/view{for | after | instead of } [update][,][insert][,][dele ...
- 【转载】Java的Vector,ArrayList,LinkedList
首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复.3个具体 ...
- [算法] Dijkstra算法(带权有向图 最短路径算法)
一.带权有向图 二.算法原理 1)由于我们的节点是从1-6,所以我们创建的列表或数组都是n+1的长度,index=0的部分不使用,循环范围为1-6(方便计算). 2)循环之前,我们先初始化dis数组和 ...