最大最小值 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R个数之间的最小值: 如果C等于2,输出第L个数到第R个数之间的最大值: 如果C等于3,输出第L个数到第R个数之间的最小值与最大值的和. (包括第L个数和第R个数).     输入 首先输入一个整数T(T≤100),表示有T组数据.对于每组数据,先输入一个整数N(1≤N≤10000),表示有N个整数:…
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1809 Bobo has a balanced parenthesis sequence P=p 1 p 2…p n of length n and q questions. The i-th question is whether P remains balanced after p ai and p bi  swapped. Note that questions are ind…
描述 Byteotian州铁道部决定赶上时代,为此他们引进了城市联网.假设城市联网顺次连接着n 个市从1 到n 编号(起始城市编号为1,终止城市编号为n).每辆火车有m个座位且在任何两个运送更多的乘客是不允许的.电脑系统将收到连续的预订请求并决定是否满足他们的请求.当火车在请求的路段上有足够的空位时,就通过这个请求,否则不通过.通过请求的一部分是不允许的通过一个请求之后,火车里的空位数目将得到更新.请求应按照收到的顺序依次处理.计算哪些请求可以通过,哪些请求不能通过. 输入 输入数据有多组以EO…
Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4715   Accepted: 1590 Description Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now require their barn to be immaculate. Farmer…
区间最小值 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 12   Accepted Submission(s) : 5 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 给定一个数字序列,查询随意给定区间内数字的最小值. Input…
题目4 : 80 Days 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 80 Days is an interesting game based on Jules Verne's science fiction "Around the World in Eighty Days". In this game, you have to manage the limited money and time. Now we simplified the game…
P1038 忠诚 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了怀疑.于是他决定用一种特别的方法来判断管家的忠诚,他把每次的账目按1,2,3…编号,然后不定时的问管家问题,问题是这样的:在a到b号账中最少的一笔是多少?为了让管家没时间作假他总是一次问多个问题. 输入…
Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15719    Accepted Submission(s): 6629 Problem Description At the entrance to the university, there is a huge rectangular billboard of…
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1754 I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 102825    Accepted Submission(s): 38669 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,…
线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还有一种做法就是对于作用域一整个区间的标记,就将其放置在此区间节点,查询时再结算其贡献,但无论怎样我们都要保证我们查询到的区间信息的真实性完整性,这就意味着我们接触一个区间若要了解到他的全部有用信息,并不用进入其下层区间(以上两种标记方式往往再结合出现时有巧妙的用处).于是我们必须高效地合并子区间的信…
Codeforces 题目传送门 & 洛谷题目传送门 首先考虑这个所谓的"括号树"与直径的本质是什么.考虑括号树上两点 \(x,y\),我们不妨用一个"DFS"的过程来理解,在 DFS 过程中假设我们在第 \(l\) 个字符后访问 \(x\),显然接下来会访问 \(x\) 的子树并回到 \(x\),也就是说对应的括号序列是一个合法括号序列,也就是说它的左右括号相抵消了,紧接着我们会向上回溯到 \(\text{LCA}(x,y)\),对于在回溯的过程中访问的点…
一.题目 描述 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,-,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列中的一段数全部加一个值; (3)询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模P的值. 输入 第一行两个整数N和P(1≤P≤1000000000).第二行含有N个非负整数,从左到右依次为a1,a2,-,aN, (0≤ai≤1000000000,1≤i≤N).第三行有一个整数M,表示操作…
Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue… The Lunar New Year was approaching, but unluckily the Little Cat still had schedules going here and there. Now, he ha…
模板题..去网上学了可撤销的并查集.. /* 给定一个无向图,边的属性为(u,v,l,r),表示<u,v>可以通过的size为[l,r] 求出有多少不同的size可以从1->n 把每条边的范围[l,r]进行区间离散化然后 建立线段树,然后把每条边按范围更新进线段树里 对线段树进行dfs,同时维护一个可撤销的并查集,经过每个线段树结点都用结点里存的边去更新并查集 到了叶子结点,如果发现[1,n]在同一个集合里,说明联通,那么把这个区间的贡献算上 回溯时要对并查集进行撤销 */ #inclu…
Problem 这题呢 就边权会在某一时刻变掉-众所周知LCT不支持删边的qwq- 所以考虑线段树分治- 直接码一发 如果 R+1 这个时间修改 那就当做 [L,R] 插入了一条边- 然后删的边和加的边存起来到栈 好删除贡献 注意一下最后一段加边-- 这题没了 #include <bits/stdc++.h> #define rep(i , x , y) for(register int i = (x) , _## i = ((y) + 1) ; i < _## i ; i ++) #d…
题意 给出一个序列  每次查询区间的max-min是多少 思路:直接维护max 和min即可  写两个query分别查最大最小值 #include<cstdio> #include<algorithm> #include<set> #include<vector> #include<cstring> #include<iostream> using namespace std; ; int a[maxn]; struct Node{…
思路:与我发表的上一遍求和的思想一样   仅仅是如今变成求最大值而已 AC代码: #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; inline int Max(int a, int b) { return a > b ? a : b; } const int MAXN…
$ \color{#0066ff}{ 题目描述 }$ 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家乐和和. 红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们的身高有所区别,排成的队伍高低错乱,极不美观.设第i个小朋友的身高为hi,我们定义一个序列的杂乱程度为:满足ihj的(i,j)数量. 幼儿园阿姨每次会选出两个小朋友,交换他们的位置,请你帮忙计算出每次交换后,序列的杂乱程度.为方便幼儿园阿姨统计,在未进行任何交换操作时,…
Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 20462   Accepted: 10096 Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue… The Lunar New Year w…
进阶指南上的做法是分块的.. 但是线段树搞起来也挺快,将磁石按照距离排序,建立线段树,结点维护区间质量最小值的下标 进行拓扑,每次在可行的范围内在线段树中找到质量最小的下标取出,取出后再将线段树对应的点设置成0 查询时找区间不为0最小值的下标即可 #include<cstdio> #include<algorithm> #define N 250010 typedef long long ll; ],tmp,h=,t,q[N];ll nowr; struct P{int m,p;l…
题目链接:https://nanti.jisuanke.com/t/38228 题目大意:一个区间的值等于该区间的和乘以区间的最小值.给出一个含有n个数的序列(序列的值有正有负),找到该序列的区间最大值. 样例输入: 5 1 2 3 4 5 样例输出: 36 解题思路:如果序列的值全部为正值的话,可以说很简单,用一个单调栈加前缀和就可以了直接a.但是区间中存在负值,这个问题就变得复杂多了. 首先我们可以用两次单调栈,在O(n)的时间内,对于每个a[i]找到一个最大区间[ l[i] , r[i]…
题意 小 \(C\) 有一棵 \(n\) 个结点的有根树,根是 \(1\) 号结点,且每个结点最多有两个子结点. 定义结点 \(x\) 的权值为: 1.若 \(x\) 没有子结点,那么它的权值会在输入里给出,保证这类点中每个结点的权值互不相同. 2.若 \(x\) 有子结点,那么它的权值有 \(p_x\) 的概率是它的子结点的权值的最大值,有 \(1-p_x\) 的概率是它的子结点的权值的最小值. 现在小 \(C\) 想知道,假设 \(1\) 号结点的权值有 \(m\) 种可能性,权值第 \(i…
https://www.lydsy.com/JudgeOnline/problem.php?id=4653 首先很容易想到离散之后排序,用线段树或者树状数组去维护. 问题在于按照什么排序,如果按照左端点右端点排序,线段树就需要维护最大值最小值和区间和等等信息,在区间和超过M之后最大值就变为了K大到最大的信息,不但麻烦而且难以下手. 所以想到直接按照区间长度排序,仅仅维护一个区间最值,代表这个区间里最大的点被覆盖了多少次,然后用一种尺取的思想,使得线段树里的最大值一值不超过M,如果超过了就在尾部开…
首先,容易得到判断一个子串为"good k-d sequence"的方法: 子串中没有重复元素,且所有元素模d相等. 记mx为除以d的最大值,mn为除以d的最小值,则\(mx-mn<=r-l+k\). 然后,我们对于每一段极大的元素同模的子串,处理\(d=1\)的情况. 显然,我们需要枚举一个端点.这里,我们从大到小枚举左端点.(当然,从小到大枚举右端点也是可行的) 我们使用单调栈和线段树,可以维护每个位置\(mx-mn\)的值.然后,因为对于每一个位置,\(r\)是固定的,所以…
0 写在前面 怎么说呢,其实从入坑线段树一来,经历过两个阶段,第一个阶段是初学阶段,那个时候看网上的一些教学博文和模板入门了线段树, 然后挑选了一个线段树模板作为自己的模板,经过了一点自己的修改,然后就已知用着,其实对线段树理解不深,属于就会套个模板的状态,期间有人问我线段树的问题,我其实也半知不解的, 后来,刷了几道DFS序+线段树的题目,那个时候多多少少有所长进,再次回过头来重新看线段树的代码,理解有所加深,算是勉强理清了线段树这个东西, 再到现在,前不久刚把splay搞完,对平衡二叉搜索树…
线段树区间更新维护最小值...记得下放标记... 如果线段树上的一个完整区间被修改,那么最小值和最大值增加相应的值后不变, 会改变是因为一部分改变而另外一部分没有改变所以维护一下就好. 询问的时候也要记得下放标记... 数据结构快忘了,贴个板. #include<bits/stdc++.h> using namespace std; typedef long long ll; ; struct Seg { ll lazy; ll Min; }tr[maxn<<]; int a[ma…
题目传送门 考场上感觉的确是线段树,还要维护区间最值...最值怎么维护?还要区间修改?\(update\)的时候加一下就好了吧...之后怎么搞啊?\(qwqwq\)之后好像不太会了...果断删除几乎快码完的线段树,开始写\(20\)分暴力....感觉\(20\)直接上\(O(n^3)\)算法应该可以.注意到有\(20\)分是\(op=0\),如果数据比较热心控制在\(1e5\)内,应该可以用\(ST\)表预处理,拿到就是血赚.--以上是考场心路李辰 最后:\(0\)分,\(qwq\). 原因:可…
二逼平衡树 bzoj-3196 Tyvj-1730 题目大意:请写出一个维护序列的数据结构支持:查询给定权值排名:查询区间k小值:单点修改:查询区间内定值前驱:查询区间内定值后继. 注释:$1\le n,m\le 5\times 10^4$. 想法: 在这里给予三种题解: 1)首先,最容易想到的应该就是树状数组套主席树也就是常说的带修改主席树. 第一个操作是简单的,我们只需要提取出当前区间的权值线段树后在上面二分即可. 第二个操作是主席树的看家本领好伐 第三个操作就是待修改主席树的意义.我们利用…
P2801 教主的魔法 (1) 若第一个字母为“M”,则紧接着有三个数字L.R.W.表示对闭区间 [L, R] 内所有英雄的身高加上W. (2) 若第一个字母为“A”,则紧接着有三个数字L.R.C.询问闭区间 [L, R] 内有多少英雄的身高大于等于C. 线段树大法好 维护区间$max$和区间$min$ 修改,正常修改即可,push_up操作修改的也只是区间最大值和最小值 关键在于查找,若当前区间的最大值$<=$所要查询的值,返回0 若当前区间的最小值$>=$所要查询的值,返回$r-l+1$…
题意:链接 方法:线段树 解析: 题意即题解. 多次询问区间最大值与最小值的差.显然直接上线段树或者rmq维护区间最值就可以. 代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 50010 #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #de…