![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
RSHS
为什么总做一些知道是错的
展开
-
CF #587 Div.3 F. Wi-Fi //线段树上dp+贪心
题目题意n(1e5)n(1e5)n(1e5)个房间相邻,单独第iii个房间装wifi需要iii花费。或者可以在可以装路由器的房间装路由器,第iii个房间装路由器,花费也是iii,但是[i−k,i+k][i-k,i+k][i−k,i+k]的房间会有wifi,求最小的花费,使得每一个房间都有wifi信号。思路贪心是最难的算法。定义dp[i]dp[i]dp[i]:递推到第iii个房间时的总花费...原创 2019-10-13 00:06:51 · 248 阅读 · 0 评论 -
POJ 2828 Buy Tickets //单点更新线段树+离线逆序
题意:模拟队列,并且有人插队,输出最后的队列。思路:线段树单点更新,维护[l,r]可用的位置,离线逆序update。#include <map>#include <set>#include <cmath>#include <queue>#include <cstdio>#include <vector...原创 2019-08-08 21:31:57 · 147 阅读 · 0 评论 -
19 hdu多校 Rikka with Cake // 主席树(无build,大区间)
http://acm.hdu.edu.cn/showproblem.php?pid=6681题意:n*m大小的蛋糕,切k刀,每次切都是选一个不在边缘的点出发的射线。求最后分成了几块。思路:等效为求交点个数+1。用两棵主席树维护纵向切的,枚举横向切的。(无build 动态开点,1e9大区间)#include<bits/stdc++.h>using namespace st...原创 2019-08-19 22:02:51 · 96 阅读 · 0 评论 -
19 hdu多校 Distribution of books //线段树+dp+二分
http://acm.hdu.edu.cn/showproblem.php?pid=6606题意:n本书,每本书有一个愉悦值ai,可以删去[x,n]的书,将剩下的书连续的分成k份,给k个人,求最小的愉悦最大值。思路:二分最小的愉悦值,dp的话,定义dp[i]为i结束的可以最多分成的份数,转移显然是n^2的复杂度。先离散化前缀和,再用线段树维护以每一个离散后的值结束的最大分成的份数。...原创 2019-08-16 14:51:59 · 109 阅读 · 0 评论 -
19 hdu多校 Welcome Party //主席树
http://acm.hdu.edu.cn/contests/contest_showproblem.php?cid=857&pid=1005题意:n个人,有xi和yi属性,将n个人分成两个队伍,分到a队只有xi属性,分到b队只有yi属性,每个队伍得至少一人,求分队后最小的abs(a队xi的最大值-b队yi的最大值)。思路:主席树,枚举x最大是谁,考虑y最大是谁。枚举到x最大的人的...原创 2019-08-21 16:55:45 · 128 阅读 · 0 评论 -
19 hdu多校 K-th Closest Distance //主席树+二分
http://acm.hdu.edu.cn/showproblem.php?pid=6621题意:给数组,和m个询问,每个询问给l,r,p,k,求出[l,r]里面和p最接近的第k个数,强制在线。思路:二分答案,判断区间里是否大于k个数,最后一次恰好为k个数。(我也不知道k那么小是什么意思。。。#include<bits/stdc++.h>using namespac...原创 2019-08-17 15:54:51 · 104 阅读 · 0 评论 -
Manthan Codefest 19 C(构造) D(线段树)
https://codeforc.es/contest/1208C:给n(n%4==0) ,用[0,n^2-1]的数,每个数只能用一次,构造n*n矩阵,使得所有行和列的异或值相同。思路:使得所有每一行和每一列,异或值都是0。连续的4个数,异或起来是0,根据这个构造。划分成n^2/16个矩阵,类似如下构造:/* (o O o) * Author : Rshs * ...原创 2019-08-26 18:04:04 · 140 阅读 · 0 评论 -
19 ccpc网络赛 02 array //主席树||线段树(查找[k,n]第一个val大于R的位置)
http://acm.hdu.edu.cn/showproblem.php?pid=6703题意:思路1:主席树对于+1e7,相当于将pos位置的元素删去。对于查询,答案为min(已经删去的≥k的第一个元素,原始数列[r+1,n]的第一个大于k的元素)。用主席树维护。(查询用了两种思路(注释和没注释的))(我的思路(复杂了),将主席树原来加上的减去,即新开一个区域对应...原创 2019-08-26 22:12:31 · 209 阅读 · 0 评论 -
18 宁夏邀请赛 Continuous Intervals // 线段树 +单调栈
题意:给数组,求有多少个[l,r],满足元素种类数量>最大值-最小值思路:线段树维护max-min-cnt,cnt为元素种类数量。线段树维护的是后缀,不断加入a[i]作为r,统计满足的l的数量。用单调栈,考虑加入a[i]后,对最大值,最小值的影响,在单调栈pop()时更新。/* (o O o) * Author : Rshs * Data : 2019...原创 2019-08-31 17:02:20 · 136 阅读 · 0 评论 -
19 南京icpc网络赛 The beautiful values of the palace//主席树 || 树状数组+二维前缀
题意:给如图类似n*n矩阵(当前图n=5),给m个(x,y),使得除了m个点,其他点都变成0。给q个询问,每次给一个矩阵,求矩阵里数字之和。(题解)思路1: //离线把查询的点拆成4个前缀查询。把所有update和query的点都sort一下,离线的更新和查询树状数组。#include<bits/stdc++.h>using namespace std;...原创 2019-09-01 20:05:05 · 290 阅读 · 0 评论 -
18 ccpc吉林 Lovers //线段树花式lazy ※※※
http://acm.hdu.edu.cn/showproblem.php?pid=6562题意:两种操作:1.下标在[l,r]的数,左边右边添一个x,如果原来是222,x==3,新数位32232.询问区间和思路:区间线段树维护sum和当前数位(100表示当前数位为2)lazy维护前缀后和后缀,还有前缀后缀的长度(如前缀158,后缀851,长度为1000)然后因...原创 2019-09-03 22:40:02 · 172 阅读 · 0 评论 -
Good Bye 2016 E. New Year and Old Subsequence//线段树+区间dp
题意:给字符串,q个询问[l,r],每次询问至少删除多少个字符使得[l,r]只含子串“2017”不含“2016” ,不要求连续。思路:每一个线段树节点维护dp[i][j],表示经过线段前已经有"2017"子串的i位,经过线段后有“2017”的j位,要删除的最少字符个数。然后区间dp转移。注意细节。/* Author : Rshs * Data : 2019-09-10-...原创 2019-09-10 16:14:57 · 139 阅读 · 0 评论 -
CF E67 D. Subarray Sorting //线段树
D. Subarray Sorting题意给 数组aaa和数组bbb,可以操作任意次,每次操作任意选择[l,r][l,r][l,r],并将aaa在该区间的数排序,问能否使aaa变得和bbb相同思路这个题目可以简化(我想到了)可以看成相邻两个数的排序,这样就等效成了冒泡。这样就想当然的想到一种做法,从左到右扫bbb,去构造aaa。如果当前遍历到下标iii,从aaa在下标大于等于iii的数...原创 2019-09-18 15:02:48 · 131 阅读 · 0 评论 -
CF Manthan, Codefest 19E. Let Them Slide // 线段树极值+差分
题目题意给这样一个东西,有n行,然后每行不一定等长,每行可以随意水平滑动,求每一列的最大值(每一列的最大值都独立)。思路可以做一个等效操作考虑每一行,[len[i]+1,w−len[i]−1][len[i]+1,w-len[i]-1][len[i]+1,w−len[i]−1]区间里一定可以得到数列里的最大值。那么可以单独处理每一列的[1,len[i]][1,len[i]][1,len...原创 2019-09-26 14:52:50 · 131 阅读 · 0 评论 -
poj 3667 Hotel //线段树区间+区间合并 ※※
心得:线段树主要需要思考的是1.维护什么:每一个节点需要维护的东西2.pushUp:两个小区间合并成大区间的方法合理性3.pushDown:lazy向下传递,以及节点的各属性更新4.query:花式query题意:n间房子,操作1:问你能否找出连续的x个房子, 如果能输出最左边的房间编号,并入住。操作2:让连续的区间住户退房。思路:线段树节点维护 最大连续空闲区间长度mx...原创 2019-08-06 16:38:06 · 94 阅读 · 0 评论 -
19 hdu多校 Snowy Smile //线段树维护最大子矩阵和
题意:n(<2000) 个点,xi(1e9),yi(1e9) ,wi有正有负,用矩形框出一个最大的sigma(wi)。思路:枚举长的左端点,不停向线段树加入点,离散化后用线段树维护最大字段和。单点动态最大字段和(线段树维护)维护:struct Tno{ LL sum,pa,suf,mx; //和,最大前缀,最大后缀,最大子段}T[MX];void pushUp(...原创 2019-08-08 16:00:02 · 171 阅读 · 0 评论 -
19 hdu多校 Longest Subarray //线段树
19 hdu多校 Longest Subarray //线段树http://acm.hdu.edu.cn/showproblem.php?pid=6602题意:给长度为n的数组,取最长的长度为k的subarray,使得每个元素要么不出现,要么出现次数大于k。题解思路::我相反,线段树维护的是不能取的区间+1。然后询问的时候,查找最左边,最小值为0的叶子节点的下标。vecto...原创 2019-07-25 17:10:49 · 256 阅读 · 0 评论 -
牛客寒假算法基础集训营5 炫酷划线 /*线段树,树状数组模板*/
牛客寒假算法基础集训营5 炫酷划线 /*线段树,树状数组模板*/链接:https://ac.nowcoder.com/acm/contest/331/E来源:牛客网平面上有一个圆,圆环上按顺时针顺序分布着从1到n,一共n个点。现在无聊的小希开始按某种顺序对其在圆内两两连线,小希尽量避免让两条线碰撞,可是有的时候,这显然避免不了。现在你知道小希划线的顺序是什么,请你判断小希...原创 2019-02-13 18:13:17 · 231 阅读 · 0 评论 -
Educational Codeforces Round 61 (Rated for Div. 2) D. Stressful Training //二分
https://codeforces.com/contest/1132/problem/D题题意是有n台笔记本,要同时使用k个时间,每个时间可以给一台电脑充电x电量,求最小的x使得n台笔记本可以度过k时间。显然 x越大越好,如果有答案,一定在某个值刚好成立,线性问题,直接二分x。首先想法是维护一个还能使用时间最小的电脑(a[i]/b[i])最小,然后模拟,贪心的给能存活时间最短的...原创 2019-03-14 19:21:17 · 156 阅读 · 0 评论 -
zzuli 2520: 大小接近的点对 //(主席树||树状数组)+离线
2520: 大小接近的点对时间限制: 1 Sec内存限制: 256 MB提交: 173解决: 25[提交] [状态] [讨论版] [命题人:外部导入]题目描述一天,Chika 对大小接近的点对产生了兴趣,她想搞明白这个问题的树上版本,你能帮助她吗?Chika 会给 你一棵有根树,这棵树有 n 个结点,被编号为 1 n,1 号结点是根。每个点有一个权值,i 号结点的权值为 ...原创 2019-04-15 22:14:00 · 322 阅读 · 0 评论 -
CDOJ 秋实大哥与花 //区间线段树模板
秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前。所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行,每朵花有一个愉悦值。秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉悦值都会增加一个相同的值vvv(vvv可能为负)。同时他想知道每次他唱完歌后这一段连续的花朵的愉悦值总和是多少。Standard Input第一行有一个整数nnn,表示花朵的总数目。第...原创 2019-04-14 18:59:49 · 176 阅读 · 0 评论 -
黑龙江大学程序设计竞赛 F GCD Problem //线段树
https://ac.nowcoder.com/acm/contest/877/F题意:给你一个序列,update:把[l,r]区间的数都开方向下取整;query:求[l,r]区间的gcd。首先对于一个数开方,最多10次?gcd可以用线段树维护,还需要维护一个最大值,对于一段全是一的区间(也就是最大值是1),那么就不需要更新了,否则就向下找需要更新的叶子节点。#include &...原创 2019-04-26 13:56:33 · 180 阅读 · 0 评论 -
洛谷 P384 静态区间第K小 //可持久化线段树(无修改静态) + 离散化 (模板)
P3834 【模板】可持久化线段树 1(主席树)题目背景这是个非常经典的主席树入门题——静态区间第K小数据已经过加强,请使用主席树。同时请注意常数优化题目描述如题,给定N个整数构成的序列,将对于指定的闭区间查询其区间内的第K小值。输入输出格式输入格式:第一行包含两个正整数N、M,分别表示序列的长度和查询的个数。第二行包含N个整数,表示这个序列各项的数字。...原创 2019-04-14 22:22:25 · 200 阅读 · 0 评论 -
poj 2886 Who Gets the Most Candies? //线段树+约瑟夫环....
Who Gets the Most Candies?Time Limit:5000MS Memory Limit:131072K Total Submissions:16809 Accepted:5293 Case Time Limit:2000MS DescriptionNchildren are sitting in a cir...原创 2019-04-27 22:51:29 · 114 阅读 · 0 评论 -
华南理工大学“三七互娱杯” B HRY and fibonacci //线段树+矩阵快速幂(矩阵化lazy)
华南理工大学“三七互娱杯” B HRY and fibonacci //线段树+矩阵快速幂(矩阵化lazy)题意:fib是斐波那契数列,fic是fib的前缀和,fid是fic的前缀和,给出q个询问,题解:得到了fid的递推式子,需要快速求出fid,并且需要得到区间的和,矩阵快速幂+线段树。线段树维护一段区间 fid(ai)的和,fid(ai-1)的和,还有ai的和...原创 2019-04-28 16:47:47 · 246 阅读 · 0 评论 -
poj 3368 Frequent values //线段树合并
poj 3368 Frequent values //线段树合并Time Limit:2000MS Memory Limit:65536K Total Submissions:23590 Accepted:8262 DescriptionYou are given a sequence ofnintegersa1, a2, ......原创 2019-04-29 14:51:16 · 108 阅读 · 0 评论 -
19南昌邀请 I. Max answer//单调栈(模板)+线段树+前缀
https://nanti.jisuanke.com/t/38228题意:给一个数组,求一个的连续区间,使得区间和*区间最小值 是一个最大的数。思路:枚举每一个最小值ai,那么如果ai大于零,那么左右延申到小于ai的位置,贪心全取。如果ai小于零,那么在左右延申后的区间,对于比i小的位置,选择前缀最大,对于比i的大的位置,选择前缀最小。那么需要线段树维护前缀,需要用单调栈预处理...原创 2019-07-05 17:59:04 · 376 阅读 · 0 评论 -
牛客 筱玛爱线段树 //线段树
https://ac.nowcoder.com/acm/contest/946/D题意:思路:注意后续的2操作,可能会调用前面的2操作,有点像递归操作给每一个操作维护一个标记,从m到1遍历,每次利用自己的标记更新前面的操作的标记。如果op==1,那么将此标记+1,如果op==2,将[l,r]的标记加上此标记数。然后标记数就是每个操作的操作数。最后执行op==1的操作,进...原创 2019-07-05 22:11:08 · 147 阅读 · 0 评论 -
CF #569 Div. 2 E:Serge and Dining Room//区间最小线段树
题意:n个dish,每个有一个价格ai,m个pupil排成一队,每个pupil有bi的钱,每个pupil都尽量买自己买的起的最贵的dish,求等m个pupil都买完后,能够买到最贵的dish是多少价格x。有q个询问,每次可以改变一个ai或者bi,然后求上述的x。思路:将ai和bi维护进桶,然后用线段树维护。线段树每一个区间节点维护的是(bi-ai)的后缀和。那么(bi-ai)的后缀...原创 2019-07-06 23:30:33 · 141 阅读 · 0 评论 -
hdu1542 Atlantis //扫描线
http://acm.hdu.edu.cn/showproblem.php?pid=1542题意:求矩形的并面积思路:扫描线扫描线:把每一条平行于y轴的边,打上标记,矩形左边为正,右边为负。沿着x轴从左往右扫。离散化y轴,缩区间为点。在线段树上维护y轴。虽然是区间加操作,但是因为区间减时,必然是已经加过的值,在pushUp的地方修改一下就不需要pushDown了。扫描线是真·区间操...原创 2019-07-28 23:46:34 · 99 阅读 · 0 评论