数据结构-线段树
李潭林
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
展开
-
洛谷P3372 线段树区间修改区间求和模板
洛谷P3372 线段树区间修改区间查询模板题原创 2022-10-11 14:31:34 · 216 阅读 · 0 评论 -
Gym 102055B Balance of the Force (二分图染色 + 联通块 + 线段树)
题意给定 n 个物品,该物品放在 A ,B阵营 有不同的价值,ai,bi。现在需要将 每个物品选择一个阵营,使得整体 n 个物品价值的最大值和最小值之差最小。同时有 m 个限制,每个限制 为 (xi , yi )表示 xi 号物品 和 yi号物品不能放在同一阵营。如果加入该限制后无法有一种合理的安排就是输出 IMPOSSIBLE,否则输出最大值和最小值之差的最小值。( 1<=n,m<...原创 2019-11-13 21:19:21 · 480 阅读 · 0 评论 -
HDU 6609 Find the answer (权值线段树)
大致题意给定一个长度为 n 的序列 ai,给定一个前缀和上限 k。现要求对于每个 i ,要使前缀和 sum[i] 小于等于 k ,要至少删除前 1- (i-1) 的多少个数字。( 1< = n < = 2e5)思路(我那个沙雕对于一开始给我贪心然后递推,我diu,这tm 没有后效性的吗…)这不就是插进来一个数,要求当前前缀和情况下挑最大的删,直到满足要求吗。显然应该离散化,...原创 2019-10-01 22:11:31 · 144 阅读 · 0 评论 -
线段树维护区间最长连续0的长度
原理本身区间最长连续0之间不可以进行区间加法操作,违背线段树基本的运算。但是容易想到两个区间合并产生的最值变化,主要由Lson的右端连续0长度加上Rson的左端连续0长度引起。即 tree[x].ma=max(tree[Lson].R0+tree[Rson].L0,max(tree[Lson].ma,tree[Rson].ma));因此我们可以考虑维护一个区间的左端连续0个数和右端连续0个数。...原创 2019-03-09 23:11:26 · 788 阅读 · 0 评论 -
HDU 6562 Lovers(线段树 取模的适用范围)
大致题意给一个长度为 n 的数列,初始都为0 ,m 次操作。有两种操作如下:swap x y z : z 是一个0-9 的数字,将区间 [x,y] 的每个数字 num 看成一个串,在两端加上 z ,相当于变成了 z“num”z 的一个数字。query x y : 求区间 [x,y] 的所有串表示的数字的和。mod 1000000007思路首先要意识到取模可以适用在修改操作中,千万不要用...原创 2019-09-06 13:22:17 · 224 阅读 · 0 评论 -
Edu 69 E Culture Code (线段树建图+拓扑序求DAG最短路 / dp)
大致题意给n个俄罗斯套娃娃,每个有个外体积out[i],内体积 in[i],外体积out[j]<=in[i]的情况下,j可以放在i里面,产生的空隙是in[i]-out[j]。现规定一个合格的套娃娃集合是在该套娃娃集合中,或者外面,无法再套上或者嵌套任何的剩余套娃。现要求产生最小空隙的套娃娃方式共有多少种。(注意一个没有套别的物品,其空隙就是in[i])思路这是一道我调了一下午的题…最后...原创 2019-09-02 20:37:59 · 138 阅读 · 0 评论 -
Mayor's posters POJ - 2528 (技巧性离散化+线段树)
大致题意n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000)。求出最后还能看见多少张海报。Input第一行: 样例个数T第二行: 贴海报的人n第三行: 每个人贴海报的范围接下来n行:每个人贴海报的范围思路由于li,ri的范围很大,需要离散化,但是容易发现,直接离散化会发生一些问题。比如[1,5]...原创 2019-08-30 20:53:26 · 134 阅读 · 0 评论 -
Tunnel Warfare HDU - 1540 (线段树查询包含某点的最长连续区间)
大致题意在抗日战争期间,华北平原广大地区进行了大规模的隧道战。 一般来说,通过隧道连接的村庄排成一列。 除了两端,每个村庄都与两个相邻的村庄直接相连。入侵者经常对一些村庄发动袭击并摧毁其中的部分隧道。 八路军指挥官要求最新的隧道和村庄连接状态。 如果某些村庄严重隔离,必须立即恢复连接!Input输入的第一行包含两个正整数n和m(n,m≤50,000),表示村庄和事件的数量。 接下来的m行中...原创 2019-08-30 20:19:27 · 138 阅读 · 0 评论 -
Assign the task HDU - 3974 (dfs序 + 线段树)
大致题意有一家公司有N个员工(从1到N),公司里每个员工都有一个直接的老板(除了整个公司的领导)。如果你是某人的直接老板,那个人就是你的下属,他的所有下属也都是你的下属。如果你是没有人的老板,那么你就没有下属,没有直接老板的员工就是整个公司的领导,也就是说N个员工构成了一棵树。公司通常把一些任务分配给一些员工来完成,当一项任务分配给某个人时,他/她会把它分配给他/她的所有下属,换句话说,这个人和...原创 2019-08-30 19:56:35 · 128 阅读 · 0 评论 -
2019CCPC网络 B.array (线段树)
大致题意给定一个1-n的排列,有m次操作。(n<=100000,m<100000);操作1:给定pos=pos^lastans ,将a[pos]加1e7操作2:给定r=r^ lastans,k=k^lastans ,询问大于等于k的最小的数,而且在区间1-r内不包含的数。思路因为强制在线,只能数据结构。一开始没看见是排列,想了半天…然后考虑权值线段树,a[i]表示数值i出现...原创 2019-08-23 20:46:00 · 206 阅读 · 0 评论