hdu5306 Gorgeous Sequence】的更多相关文章

hdu5306 Gorgeous Sequence 题目大意 ​ 给你一个序列,维护区间和,区间chkmin和区间最大值 数据范围 数据组数T,序列长度n,操作次数m $T = 100,\sum n \leqslant 1000000 ,\sum m \leqslant 1000000 $ 这是一道吉司机线段树的裸题,直接维护区间最大值,次大值,最大值个数,区间和就行了. #include<bits/stdc++.h> using namespace std; #define REP(i,st…
线段树秀操作题. 奇怪的计算器 有 N 个数,一共会对这 N 个数执行 M 个指令(对没个数执行的指令都一样),每一条指令可以是以下四种指令之一:(这里 a 表示一个正整数) 加上 a 减去 a 乘以 a 加上 a*X(X 是数最开始的初值) 该计算器有个奇怪的特点.每进行一个指令,若结果大于 R则变成 R,同理若结果小于 L,则变成 L.求这 N 个数最后的结果. N, M ≤ 200000 题解 重要性质:无论题目里面的修改怎么执行,所有数的相对大小(即排名)不变.所以我们每次的chkmin…
题意:维护一个序列,支持区间与一个数取min,询问区间最大,询问区间和(序列长度<=1e6) 分析: http://www.shuizilong.com/house/archives/hdu-5306-gorgeous-sequence/?variant=zh-cn 在建树的时候,就已经生成了lazy标记,具体的参加jry的16年集训队论文 这样使得lazy标记有了这一样一个性质:子节点向上走碰到的第一个lazy的值就是此节点的值 打标记操作: 标记回收操作:…
Gorgeous Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2150    Accepted Submission(s): 594 Problem Description There is a sequence a of length n. We use ai to denote the i-th elemen…
Gorgeous Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 349    Accepted Submission(s): 57 Problem Description There is a sequence a of length n. We use ai to denote the i-th element…
http://www.shuizilong.com/house/archives/hdu-5306-gorgeous-sequence/ Gorgeous Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 440    Accepted Submission(s): 87 Problem Description Th…
Gorgeous Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 6946    Accepted Submission(s): 1784 Problem Description There is a sequence a of length n. We use ai to denote the i-th eleme…
http://acm.hdu.edu.cn/showproblem.php?pid=5306 (题目链接) 题意 区间取$min$操作,区间求和操作,区间求最值操作. Solution 乱搞一通竟然AC了= =,具体参考吉如一论文.蒯一发上来方便自己以后看嘿嘿. 对线段树中的每一个节点除了维护区间最值和区间和以外,还要额外维护区间中的最大值$ma$,严格次大值$se$以及最大值个数$t$. 现在假设我们要让区间$[L,R]$对$x$取$\min$,我们先在线段树中定位这个区间,对定位的每一个节点…
题目描述 给你一个序列,支持三种操作: $0\ x\ y\ t$ :将 $[x,y]$ 内大于 $t$ 的数变为 $t$ :$1\ x\ y$ :求 $[x,y]$ 内所有数的最大值:$2\ x\ y$ :求 $[x,y]$ 内所有数的和. 多组测试数据,$\sum n,\sum m\le 10^6$ 题解 线段树区间最值操作 对于线段树上的一个节点,维护对应区间的:最大值 $mx$ .最大值个数 $c$ 及严格次大值 $se$ .那么对于一次区间最小值操作: 如果 $t\ge mx$ ,则这个…
http://acm.hdu.edu.cn/showproblem.php?pid=5306 给一个数组,m次操作: 1:l r x,将a[i](l<=i<=r)=min(a[i],x) 2:l r,求区间最大值. 3:l r,求区间和. 吉司机线段树,论文题,论文讲的很详细了. 维护一个最大值mx和次大值se,分类讨论: 当mx<=x显然没有影响. 当se<x<mx打标记修改区间. 否则暴力递归两个儿子. 通过奇(看)技(论)淫(文)巧能够证明复杂度是O(mlogn). (…
这个题目是Segment-Tree-beats的论文的第一题. 首先我们考虑下这个问题的不同之处在于,有一个区间对x取max的操作. 那么如何维护这个操作呢? 就是对于线段树的区间,维护一个最大值标记,最大值出现次数,以及严格次大值. 接下来考虑处理操作. 首先如果x>maxv[o]证明已经是无所谓的,所以应该直接放弃. 如果v处于semx[o]<x<maxv[o],证明只有最大值需要被修改. 其他的情况就继续向下递进就可以了. 那么我们证明一下为什么这么做复杂度是对的. 首先,如同论文…
题目大意:给你一个序列a,你有三个操作,0: x y t将a[x,y]和t取min:1:x y求a[x,y]的最大值:2:x y求a[x,y]的sum 题解:首先很明显就是线段树裸题,那么考虑如何维护 区间最大值和区间sum很好维护,0操作不好做,那么考虑怎么快速解决0操作 很容易想到维护区间最大值和区间是否全部相同,这是一个做法,但是时间复杂度上却不正确,但也给了我们一个思路,可以通过维护最大值之类的数来加快操作 一个不行就两个,于是考虑维护次大值,那么每次0操作就有三种情况,一:比区间最大值…
There is a sequence aa of length nn. We use aiai to denote the ii-th element in this sequence. You should do the following three types of operations to this sequence. 0 x y t0 x y t: For every x≤i≤yx≤i≤y, we use min(ai,t)min(ai,t) to replace the orig…
算导: 核算法 给每种操作一个摊还代价(是手工定义的),给数据结构中某些东西一个“信用”值(不是手动定义的,是被动产生的),摊还代价等于实际代价+信用变化量. 当实际代价小于摊还代价时,增加等于差额的信用: 当实际代价大于摊还代价时,减少等于差额的信用. 显然总摊还代价等于总实际代价+总信用变化量. 如果信用变化量始终>=0,那么总摊还代价给出总实际代价的一个上界:设法证明信用变化量始终>=0 势能法 对整个数据结构定义一个“势”函数$\Phi$ 定义一个操作的摊还代价为实际代价加上势的变化量…
如果维护max,sum,那么可以得到一个暴力方法,如果t>=max,那可以return,否则往下更新,显然超时. 在上面基础上,再维护一下次大值,与最大值的个数.这样一来,次大值<t<最大值 这样的情况也可以更新完了之后直接return,pushDown的话也很好操作. 实践证明,这样的复杂度降到了nlog(n),具体证明可以看吉如一论文. #pragma comment(linker, "/STACK:1024000000,1024000000") #include…
题解: 线段树维护区间取min求和求max 维护最小值以及个数,次小值 标记清除时,分情况讨论 当lazy>max1 退出 当max1>lazy>max2(注意不要有等号) 更新 否则递归处理 据吉如一的论文上说是nlogn的复杂度(至今不知论文在何处) 卡常?? 不懂常熟技巧 那就开个o2水一下.... 这数的大小 正好2^31 刚开始没看..对拍挺对交上去wa了 #pragma G++ optimize (2) #include <bits/stdc++.h> using…
题目链接 吉司机线段树裸题... #include<bits/stdc++.h> using namespace std; typedef long long ll; ,inf=0x3f3f3f3f3f3f3f3f; ll n,m,a[N],mx[N<<],se[N<<],nmx[N<<],lz[N<<]; ll sum[N<<]; #define ls (u<<1) #define rs (u<<1|1) #…
题目传送门 题目描述: (原题英文) 操作0:输入l,r,t,线段树区间与t取min. 操作1:输入l,r,区间取最大值. 操作2:输入l,r,区间求和. 输入格式: 第一行一个整数T,表示数据组数: 对于每组数据,第一行两个整数n,m: 第二行n个整数,分别表示每个点的初始值. 第三行到第m+2行,一开始一个整数表示操作几,如题. 输出格式: 每一个询问操作,对应相应输出. 样例: 样例输入: 5 51 2 3 4 51 1 52 1 50 3 5 31 1 52 1 5 样例输出: 数据范围…
这道题被学长称为“科幻题” 题面 事实上,并不是做法科幻,而是“为什么能这么做?”的解释非常科幻 换句话说,复杂度分析灰常诡异以至于吉如一大佬当场吃书 线段树维护的量:区间和sum,区间最大值max1,区间次大值max2,最大值出现次数cnt. 现在假设区间[l,r]对x取min,那么有如下三种情况: 1.max1<=x,不用修改,return : 2.max2<x<max1,修改只会影响所有最大值,sum+=cnt*(max1-x),更新max1打标记: 3.max2>=x,暴力…
题目链接 传送门 题面 思路 对于线段树的每个结点我们存这个区间的最大值\(mx\).最大值个数\(cnt\).严格第二大数\(se\),操作\(0\): 如果\(mx\leq val\)则不需要更新改区间: 如果\(se\leq val<mx\)则只需将区间最大值进行更新,此时\(sum=sum-cnt\times (mx - val)\): 如果\(val<se\)则递归下去. (详情请看吉老师\(ppt\) 因为一开始加了个\(lazy\)标记导致情况复杂化,且不好处理,对拍好久才发现.…
Code: #include<algorithm> #include<cstdio> #include<cstring> #define ll long long #define setIO(s) freopen(s".in","r",stdin) #define maxn 2000000 #define lson (now<<1) #define rson ((now<<1)|1) using names…
Segment tree Beats Segment tree Beats,吉司机线段树,主要是关于如何用线段树实现区间取min/max.我们先看一道例题: HDU5306 Gorgeous Sequence 题目大意:给一个序列,要求支持区间取min(即对于一段区间,用min(a[i],x)替换a[i](x已给出)),询问区间和以及区间最大值. 看到区间求和,区间最大,我们自然想到用线段树来解决这个问题,但我们如何解决区间区间取min? 既然用的是线段树,我们不妨试着打一下标记.我们维护一下区…
·栈.单调栈 1.栈的特点与基本操作 2.单调栈 单调栈是一种特殊的栈,其栈内的元素都保持一个单调性(单调递增或者递减). ·单调递增栈,从栈底到栈顶依次递增(单调非递减栈:允许有相等) ·单调递减栈,从栈底到栈顶依次递减(单调非递增栈:允许有相等) qes1.给一个序列,求对于每个数左边第一个比它大的数 做法:维护一个单调栈 ①如果当前栈顶的元素比自己小,则将栈顶元素不断弹出,直到遇到第一个比自己大的元素,即为左边第一个比自己大的数 ②如果一直弹出直到栈空了,则无法找到左边比自己大的元素 ③将…
oracle创建序列化: CREATE SEQUENCE seq_itv_collection            INCREMENT BY 1  -- 每次加几个              START WITH 1399       -- 从1开始计数              NOMAXVALUE        -- 不设置最大值              NOCYCLE               -- 一直累加,不循环              CACHE 10; oracle修改序列…
功能:备份存储过程,视图,函数触发器,Sequence序列号等准备工作:--1.创建文件夹 :'E:/OracleBackUp/ProcBack';--文本存放的路径--2.执行:create or replace directory MyProcBakPath as 'E:/OracleBackUp/ProcBack';--3.赋权限:sqlplus /nologconn user/pswd as sysdbagrant select on DBA_OBJECTS to user;--4.创建…
环境:Oracle 11.2.0.4 DG 故障现象: 客户在备库告警日志中发现GAP sequence提示信息: Mon Nov 21 09:53:29 2016 Media Recovery Waiting for thread 1 sequence 12034 Fetching gap sequence in thread 1, gap sequence 12034-12078 Mon Nov 21 09:55:20 2016 FAL[client]: Failed to request…
The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the permutations in order,We get the following sequence (ie, for n = 3): "123" "132" "213" "231" "312" "3…
Check whether the original sequence org can be uniquely reconstructed from the sequences in seqs. The org sequence is a permutation of the integers from 1 to n, with 1 ≤ n ≤ 104. Reconstruction means building a shortest common supersequence of the se…
Given a binary tree, find the length of the longest consecutive sequence path. The path refers to any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The longest consecutive path need to be from p…
Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary search tree. You may assume each number in the sequence is unique. Follow up: Could you do it using only constant space complexity? 这道题让给了我们一个一维数组,让我们…