题目描述 给你一个序列,支持4种操作:1.查询区间最大值:2.查询区间历史最大值:3.区间加:4.区间赋值. 输入 第一行一个正整数T,表示Bob需要监视CPU的总时间. 然后第二行给出T个数表示在你的监视程序执行之前,Bob干的事让CPU在这段时间内每个时刻的使用率达已经达到了多少. 第三行给出一个数E,表示Bob需要做的事和询问的总数. 接下来E行每行表示给出一个询问或者列出一条事件: Q X Y:询问从X到Y这段时间内CPU最高使用率 A X Y:询问从X到Y这段时间内之前列出的事件使CP…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3064 题意概括 一个序列,要你支持以下操作: 1. 区间询问最大值 2. 区间询问历史最大值 3. 区间加某一个值 4. 区间赋值 序列长度<=100000, 操作数<=100000 题解 http://blog.csdn.net/vmurder/article/details/43271091 为了一个傻逼错误找了2个小时的我,实在不想写题解了.请您看上面那个链接 的…… 代码 #inclu…
题目描述 给你一个长度为 $n$ 的序列,支持五种操作: $1\ l\ r\ x$ :将 $[l,r]$ 内的数加上 $x$ :$2\ l\ r\ x$ :将 $[l,r]$ 内的数减去 $x$ ,并与 $0$ 取 $\text{max}$ :$3\ l\ r\ x$ :将 $[l,r]$ 内的数变为 $x$ :$4\ y$ :询问第 $y$ 个数的值:$5\ y$ :询问第 $y$ 个数的历史最大值. $n,m\le 5\times 10^5,0\le x\le 10^9$ 题解 线段树维护历…
Description Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看视频之外,还会做出去玩玩和用鼠标乱点之类的事,甚至会一脚踢掉电源……这些事有的会让做这件事的这段时间内CPU使用率增加或减少一个值:有的事还会直接让CPU使用率变为一个值. 当然Bob会询问:在之前给出的事件影响下,CPU在某段时间内,使用率最高是多少.有时候Bob还会好奇地询问,在某段时间内CPU曾经的最高使用率…
都说这题是 GSS 系列中最难的,今天做了一下,名副其实 首先你可以想到各种各样的在线乱搞想法,线段树,主席树,平衡树,等等,但发现都不太可行. 注意到题目也没有说强制在线,因此可以想到离线地去解决这道题. 我们把询问按照右端点从小到大排序.假设当前询问的右端点为 \(i\). 定义 \(s_j\) 为 \([j,i]\) 中不重复数字的和.我们建一棵线段树维护 \(s_j\) 的最大值. 这样修改起来就比较自然了,当右端点从 \(i-1\) 变到 \(i\) 的时候,记 \(a_i\) 上一次…
传送门 线段树好题. 维护区间加,区间覆盖,区间最大,区间历史最大. 这个东西在国家集训队2016论文集之<区间最值操作与历史最值问题--杭州学军中学 吉如一>中讲的已经很详细了. 简单来说是这样的: 我们先考虑没有区间覆盖的情况,如果只有区间加的话,我们维护一个标记history" role="presentation" style="position: relative;">historyhistory_add" role=…
题目:http://uoj.ac/problem/164 把操作改成形如 ( a,b ) 表示加上 a 之后对 b 取 max 的意思. 每个点维护当前的 a , b ,还有历史最大的 a , b 即 ma , mb . 因为最后的答案是 tp[ x ] + ma , mb 中的一个,所以这样维护.之所以不直接维护 max{ tp[ x ]+ma , mb } ,是为了方便转移. 转移 a , b 的时候就是 \( max{max{x+a,b}+a',b'} <=> max{x+a+a',ma…
Description 1.区间加 \(z\) 2.区间覆盖为 \(z\) 3.查询区间最大值 4.查询区间历史最大值 Solution 线段树维护历史最值,思想大致是维护标记出现过的最大值 考虑这种情况: \(x\) 点下方标记,会把儿子的标记给覆盖掉,而儿子的儿子如果有了这个标记就会成为最大值,会影响最终结果 那么我们把标记下放的过程中维护的标记取个 \(max\) 再下放就行了 所以维护四个东西,历史最大值 \(nt\),当前最大值\(pt\),历史最大标记\(lap\),当前标记\(la…
[Tyvj 1518]CPU监控 题目 Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看视频之外,还会做出去玩玩和用鼠标乱点之类的事,甚至会一脚踢掉电源--这些事有的会让做这件事的这段时间内CPU使用率增加或减少一个值:有的事还会直接让CPU使用率变为一个值. 当然Bob会询问:在之前给出的事件影响下,CPU在某段时间内,使用率最高是多少.有时候Bob还会好奇地询问,在某段时间内CPU…
题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array is [1 3 -1 -3 5 3 6 7], and k = 3. 输入输出格式 输入格式: 输入一共有两行,第一行为n,k. 第二行为n个数(<INT_MAX). 输出格式: 输出共两行,第一行为每次窗口滑动的最小值 第二行为每次窗口滑动的最大值 说明 50%的数据,n<=10^5 100%的数…