线段树
live4m
老菜逼了
展开
-
Codeforces 1295 E.Permutation Separation (线段树)
E.Permutation SeparationYou are given a permutation p1,p2,…,pn (an array where each integer from 1 to n appears exactly once). The weight of the i-th element of this permutation is ai.At first, you ...原创 2020-02-02 18:18:27 · 586 阅读 · 0 评论 -
CodeForces 69 E.Subsegments(权值线段树)
E.SubsegmentsProgrammer Sasha has recently begun to study data structures. His coach Stas told him to solve the problem of finding a minimum on the segment of the array in , which Sasha coped with. F...原创 2019-11-25 22:11:11 · 229 阅读 · 0 评论 -
CodeForces 438 D.The Child and Sequence (线段树,区间取模)
题意:长度为n的序列,m次操作(1,l,r)求区间[l,r]的和(2,l,r,x)区间[l,r]对x取模(3,x,val)a[x]修改为val输出每次操作1的结果区间和可能爆int思路:操作1和3是线段树基本操作,主要问题在操作2,如果真的对每一个数都取模,肯定tle。正确思路类似区间开方的一题,数值如果太小就不继续递归,这样剪枝之后就不会tle了。线段树维护区间最值,取模操作...原创 2019-11-21 19:46:28 · 118 阅读 · 0 评论 -
CodeForces 482 B.Interesting Array (线段树)
题意:给n和m和m个l,r,x要求构造一个数组,使得对于m个l,r,x[l,r]的区间与(&)结果为x思路:对于每个l,r,x如果x的某一位为1,则[l,r]中每一位的这个位置都要为1所以直接对区间[l,r]或一遍x过去,(注意是或不是与)m次操作结束之后再对m个操作判断区间[l,r]的区间与是否等于x就行了code:#include<bits/stdc++.h...原创 2019-11-17 19:06:14 · 123 阅读 · 0 评论 -
CodeForces381 E.Sereja and Brackets(线段树)
题意:给一个括号序列,q个询问每个询问求[l,r]中最大合法括号序列长度(注意是序列)ExamplesInput())(())(())(71 12 31 21 128 125 112 10Output00210466思路:线段树维护三个信息:已经匹配的合法括号序列个数多余的左括号个数多余的右括号个数pushup的时候左子树左括号个数和右子树右...原创 2019-11-06 23:19:29 · 111 阅读 · 0 评论 -
CodeForces914 D.Bash and a Tough Math Puzzle(线段树)
题意:给长度为n的序列,有q次操作:操作有两种:1.(1,x,y)把a[x]改成y2.(2,l,r,x)询问区间[l,r]能否通过修改一个数(改成任意数)使得区间gcd为x(不用真的修改)思路:单点修改和区间gcd可以用线段树轻松解决,难点主要是询问。1.如果区间gcd是x的倍数,则把任意数修改为x都满足条件2.如果区间内只有一个数不是x的倍数,则把这个数改成x后满足条件3.如...原创 2019-10-15 20:37:15 · 198 阅读 · 3 评论 -
hdu 5172 GTY‘s gay friends (线段树判断区间是否是排列)
Problem DescriptionGTY has n gay friends. To manage them conveniently, every morning he ordered all his gay friends to stand in a line. Every gay friend has a characteristic value ai , to express how...原创 2019-10-12 22:52:52 · 189 阅读 · 0 评论 -
hdu6601 Keen On Everything But Triangle (主席树+斐波那契和三角形组成的关系)
题意:给长度为n的数列,m个询问每次询问给区间(L,R)从区间内选择三个数组成三角形问组成的三角形的最大周长如果不能组成三角形输出-1Sample Input5 32 5 6 5 21 32 42 5Sample Output131616分析:显然边长要最长优先选择长的边用主席树实现选取区间第k大假设前4长的边依次为abcd根据两边之和大于第三边如果b+c...原创 2019-09-02 23:35:42 · 125 阅读 · 0 评论 -
POJ2828 Buy Tickets (权值线段树上二分)
Buy TicketsRailway 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 st...原创 2019-09-06 13:18:49 · 145 阅读 · 0 评论 -
hdu5692 Snacks (dfs序建线段树)
Problem Description百度科技园内有n个零食机,零食机之间通过n−1条路相互连通。每个零食机都有一个值v,表示为小度熊提供零食的价值。由于零食被频繁的消耗和补充,零食机的价值v会时常发生变化。小度熊只能从编号为0的零食机出发,并且每个零食机至多经过一次。另外,小度熊会对某个零食机的零食有所偏爱,要求路线上必须有那个零食机。为小度熊规划一个路线,使得路线上的价值总和最大。In...原创 2019-09-13 09:15:12 · 98 阅读 · 0 评论 -
bzoj2212 Tree Rotations (线段树合并)
问题描述现在有一棵二叉树,所有非叶子节点都有两个孩子。在每个叶子节点上有一个权值(有n个叶子节点,满足这些权值为1…n的一个排列)。可以任意交换每个非叶子节点的左右孩子。要求进行一系列交换,使得最终所有叶子节点的权值按照遍历序写出来,逆序对个数最少。input第一行n下面每行,一个数x如果x==0,表示这个节点非叶子节点,递归地向下读入其左孩子和右孩子的信息,如果x!=0,表示这个...原创 2019-09-13 15:46:09 · 158 阅读 · 0 评论 -
bzoj2733 永无乡 (并查集+线段树合并)
问题描述永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,则称岛 a 和岛 b 是连 通的。现在有两种操作:B x y 表示在岛 x 与岛 y 之间修建一座新桥。Q x k 表示询问当前与...原创 2019-09-13 18:27:28 · 139 阅读 · 0 评论 -
P3605 [USACO17JAN]Promotion Counting晋升者计数 (线段树合并)
问题描述:奶牛们又一次试图创建一家创业公司,还是没有从过去的经验中吸取教训–牛是可怕的管理者!为了方便,把奶牛从 1-n(n<=1e6) 编号,把公司组织成一棵树,1 号奶牛作为总裁(这棵树的根节点)。除了总裁以外的每头奶牛都有一个单独的上司(它在树上的 “双亲结点”)。所有的第 i 头牛都有一个不同的能力指数 p(i),描述了她对其工作的擅长程度。如果奶牛 i 是奶牛 j 的祖先节点(...原创 2019-09-13 21:21:39 · 190 阅读 · 0 评论 -
[SHOI2013]发牌 (树状数组+二分 或 权值线段树)
链接:https://ac.nowcoder.com/acm/problem/20588来源:牛客网题目描述假设一开始,荷官拿出了一副新牌,这副牌有N张不同的牌,编号依次为1到N。由于是新牌,所以牌是按照顺序排好的,从牌库顶开始,依次为1, 2,……直到N,N号牌在牌库底。为了发完所有的牌,荷官会进行N次发牌操作,在第i次发牌之前,他会连续进行Ri次销牌操作,Ri由输入给定。请问最后玩家拿到...原创 2019-09-24 18:38:59 · 195 阅读 · 0 评论 -
nowcoder 树的距离 (DFS序建主席树)
链接:https://ac.nowcoder.com/acm/problem/14415来源:牛客网题目描述wyf非常喜欢树。一棵有根数树上有N个节点,1号点是他的根,每条边都有一个距离,而wyf是个爱问奇怪问题的熊孩子,他想知道对于某个点x,以x为根的子树上,所有与x距离大于等于k的点与x的距离之和。输入描述:第一行一个正整数N接下来N-1描述这棵树,每行两个数第i行两个数p和D表示...原创 2019-09-28 10:23:48 · 234 阅读 · 3 评论 -
csu2107 千万别用树套树 (权值线段树*2)
问题描述Bobo 精通数据结构!他想维护一个线段的集合 S。初始时,S 为空。他会依次进行 q 次操作,操作有 2 种。类型 1:给出 l, r,向集合 S 中插入线段 [l, r].类型 2:给出 l, r,询问满足 [x, y]∈S 且 x ≤ l ≤ r ≤ y 的线段 [x, y] 数量。帮 Bobo 求出每次询问的答案。1 ≤ n, q ≤ 105ti ∈ {1, 2}1 ...原创 2019-10-03 13:19:06 · 168 阅读 · 0 评论 -
bzoj3224 Tyvj 1728 普通平衡树 (权值线段树 模板题)
问题描述您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入x数删除x数(若有多个相同的数,因只删除一个)查询x数的排名(若有多个相同的数,因输出最小的排名)查询排名为x的数求x的前驱(前驱定义为小于x,且最大的数)求x的后继(后继定义为大于x,且最小的数)Input第一行为n,表示操作的个数,下面n行每行有两个数opt和x,opt表示操作的序号(...原创 2019-08-29 20:17:42 · 235 阅读 · 0 评论 -
hdu 5919 Sequence II (区间内数字第一次出现的位置 强制在线 主席树 )
题意:给长度为n的数组,m次询问每次询问要求输出区间L到R钟所有数第一次出现的位置的中位数且强制在线分析:思想类似于求区间内不同数的个数从后向前建主席树,每次插入数字的下标,插入前判断数字之前(这个之前表示数组的后面)是否出现过,如果出现过,就删除之前的然后再添加新的,这样保证每个数靠近L这样r(L)版本的权值线段树中小于等于R的非空叶子节点就是该区间内每个数字第一次出现的位置区间...原创 2019-08-29 17:18:18 · 157 阅读 · 0 评论 -
bzoj2588 Spoj 10628. Count on a tree (主席树+LCA)
问题描述给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。Input第一行两个整数N,M。第二行有N个整数,其中第i个整数表示点i的权值。后面N-1行每行两个整数(x,y),表示点x到点y有一条边。最后M行每行两个整数(u,v,k)...原创 2019-08-29 15:38:38 · 176 阅读 · 0 评论 -
hdu3974与poj3321 DFS序建线段树
分析:通过dfs序把树转化为序列,这样就能把树上操作转化为序列操作了。树状数组,线段树这种就可以直接安排上了。hdu3974code:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<...原创 2019-08-05 23:44:58 · 138 阅读 · 0 评论 -
hdu1540 Tunnel Warfare (线段树 最大连续1区间)
Tunnel WarfareDuring the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast areas of north China Plain. Generally speaking, villages connected by tunnels lay in a...原创 2019-08-06 21:36:12 · 132 阅读 · 0 评论 -
hdu3308 LCIS (线段树,区间最长连续递增序列)
LCISGiven n integers.You have two operations:U A B: replace the Ath number by B. (index counting from 0)Q A B: output the length of the longest consecutive increasing subsequence (LCIS) in [a, b]....原创 2019-08-06 21:43:06 · 214 阅读 · 0 评论 -
hdu1542 Atlantis (线段树扫描线,矩形覆盖面积并)
问题描述有几个古希腊文本包含了对传说中的亚特兰蒂斯岛的描述。其中一些文本甚至包括该岛部分地区的地图。但不幸的是,这些地图描述了亚特兰蒂斯的不同区域。你的朋友比尔必须知道地图存在的总面积。你(不明智地)自愿编写一个程序来计算这个数量。输入输入文件由几个测试用例组成。每个测试用例都以一行开始,其中包含一个可用映射的整数n (1<=n<=100)。下面的n行描述了每个映射。每一行包含四...原创 2019-08-18 17:01:28 · 177 阅读 · 0 评论 -
hdu1255 覆盖的面积 (线段树扫描线, 矩形覆盖至少两次的面积)
问题描述给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积.Input输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范围从...原创 2019-08-19 10:08:41 · 401 阅读 · 0 评论 -
hdu1394 Minimum Inversion Number (逆序对性质)
Problem DescriptionThe inversion number of a given number sequence a1, a2, …, an is the number of pairs (ai, aj) that satisfy i < j and ai > aj.For a given sequence of numbers a1, a2, …, an, i...原创 2019-08-26 19:41:52 · 132 阅读 · 0 评论 -
hdu6609 Find the answer (权值线段树)
Find the answerGiven a sequence of n integers called W and an integer m. For each i (1 <= i <= n), you can choose some elements Wk (1 <= k < i), and change them to zero to make ∑ij=1Wj<...原创 2019-08-27 09:37:48 · 249 阅读 · 0 评论 -
线段树动态开点
动态开点为了降低权值线段树的空间复杂度,可以不直接建出整棵线段树的结构,而是在最初只建立一个根节点,当需要访问某棵为建立的子树的时候,再建立代表这个子树的节点。动态开点的线段树不再使用完全二叉树父子节点的二倍编号规则, 而是用变量记录左右节点的编号。例题:P1908 逆序对(这题正常应该用离散化做)code:#include<cstdio>#include<cst...原创 2019-08-27 13:46:53 · 609 阅读 · 2 评论 -
CodeForces - 1208 D.Restore Permutation (线段树)
Restore PermutationAn array of integers p1,p2,…,pn is called a permutation if it contains each number from 1 to n exactly once. For example, the following arrays are permutations: [3,1,2],[1],[1,2,3,...原创 2019-08-27 19:46:29 · 230 阅读 · 0 评论 -
poj2104 K-th Number (区间第K小,主席树 模板题)
题意:多组案例。给n和m,表示长度为n的数列,和m个询问每个询问要求输出区间L-R中第K小的数分析:区间第K小模板题,直接上主席树code:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>us...原创 2019-08-28 10:25:02 · 152 阅读 · 0 评论 -
HDU - 4417 Super Mario (求区间小于k的数的个数 主席树 在线)
题意:n个数a(1)-a(n),m个询问Q每个询问要求输出区间L,R内比h小的数的个数分析:树状数组离线解法:点此主席树可以维护区间内每个数的数量答案即查询1-k之间的数的数量(权值线段树区间查询)需要离散化code:#include<cstdio>#include<cstring>#include<iostream>#include&l...原创 2019-08-28 12:32:45 · 307 阅读 · 0 评论 -
hdu6703 array (求区间内k的后继,主席树)
问题描述:给一个长度为n的数列a(1)-a(n),其中a(i)为1-n的数,且每个元素是不同的接下来有m个指令指令有两种:1.(1,pos),表示把a[pos]加上100000002.(2,r,k),求不等于a(1)到a®且不小于k的最小整数输出指令2的结果题目保证r和k小于等于nn小于等于1e5输入:T,表示T组案例每组案例:输入n和m,表示n个数m个指令下面一行n个数...原创 2019-08-28 18:30:18 · 273 阅读 · 2 评论 -
spoj - DQUERY (区间内不同数的个数 主席树 在线)
题意:给n,然后给长度为n的数组各m,表示m各询问每个询问给L,R,输出L到R中不同数字的个数分析:和用树状数组解差不多,每次插入数字的下标,插入前判断数字之前是否出现过,如果出现过,就删除之前的然后再添加新的ps:第一次见到一棵树修改超过一次的题code:#include<cstdio>#include<cstring>#include<ios...原创 2019-08-28 21:22:16 · 147 阅读 · 0 评论 -
2019牛客多校七 C.Governing sand(主席树)
C.Governing sand链接:https://ac.nowcoder.com/acm/contest/887/C来源:牛客网问题描述w村经常受到风沙的袭击,沙尘暴严重阻碍了w村的发展,w村前面有一片森林,这片森林可以防止风沙入侵。但是有一个规则,森林钟最高的树的数量应该超过所有树木的一半,这样就可以防止风沙入侵。砍伐一棵树需要花费一定的钱,不同种类的树花费不同的钱,w村也和穷。现...原创 2019-08-29 12:20:28 · 138 阅读 · 0 评论 -
uestc1324 卿学姐与公主 线段树或分块入门
卿学姐与公主链接:卿学姐与公主某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中。英勇的卿学姐拔出利刃冲向了拯救公主的道路。走过了荒野,翻越了高山,跨过了大洋,卿学姐来到了魔王的第一道城关。在这个城关面前的是魔王的精锐部队,这些士兵成一字排开。卿学姐的武器每次只能攻击一个士兵,并造成一定伤害,卿学姐想知道某时刻从...原创 2019-05-24 16:54:58 · 158 阅读 · 1 评论