
线段树
文章平均质量分 62
QTY_
衡中信奥的渣
愿追求卓越,不断前行;只为爱&梦想,不曾停怯
展开
-
线段树合并 [HNOI2012]永无乡
问题 B: [HNOI2012]永无乡 时间限制: 1 Sec 内存限制: 128 MB 提交: 50 解决: 28 [提交][状态][讨论版] 题目描述 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含原创 2017-09-24 19:33:34 · 459 阅读 · 0 评论 -
线段树 乌鸦喝水
问题 B: 乌鸦喝水 时间限制: 2 Sec 内存限制: 128 MB 题目描述 【题目背景】 一只乌鸦在自娱自乐,它在面前放了n个有魔力的水缸,水缸里装有无限的水。 【题目描述】 他准备从第1个水缸飞到第n个水缸,共m次。在飞过一个水缸的过程中,如果他能够得着水缸里的水,即水缸口到水面距离小于等于乌鸦能够得着的深度,那它就会喝水缸里的水。每喝一次水,所有水缸里的水位都原创 2017-10-12 20:40:04 · 516 阅读 · 0 评论 -
线段树 weed
最近做了好多线段树啊。。。(但考试时压根想不到这是线段树) 尤其是这道题。 记录这个节点所在区间要向左边删几个,留下了几个,留下值的总和。 那么问题就在于对左右子节点的合并了。因为记录的左右子节点的删除个数,剩余个数,那么只要判断是左边剩下的多,还是右边删得多。如果删得多,那处理就比较方便了。(自己想。。。);但如果是剩的多呢?那么左儿子会剩下一部分,这个就要递归处理了,删掉右儿子的删除的个数原创 2017-10-08 16:39:51 · 293 阅读 · 0 评论 -
线段树 God Knows
听说这是“极长上升序列”。。。我们可以把题中的图改一下,把左侧的一排视为编号,此位置的值就是此点在右侧连的点的编号。这样问题就变成一个序列了。很明显选一个点就会覆盖它之前权值比他大的点以及它之后权值比他小的点。设f[i]为最后一个选的是i,且i之前的全被覆盖时的最小花费。很容易发现,如果f[i]要从之前的f[j]转移过来,那么a[j]一定比a[i]小,否则i已经被j覆盖了。而且,a[j]一定是区间[原创 2017-10-23 21:46:22 · 461 阅读 · 0 评论 -
欧拉函数+线段树 奇数国
问题 B: 奇数国 时间限制: 1 Sec 内存限制: 256 MB 提交: 82 解决: 44 [提交][状态][讨论版] 题目描述 在一片美丽的大陆上有100000个国家,记为1到100000。这里经济发达,有数不尽的账房,并且每个国家有一个银行。某大公司的领袖在这100000个银行开户时都存了3大洋,他惜财如命,因此会不时地派小弟GFS清点一些银行的存款或者让GFS改变某个银行的原创 2017-10-20 17:33:30 · 833 阅读 · 0 评论 -
线段树 string
题面去内网找。之前对于处理要求排序的数据结构一直很懵,其实对于普通的数列,排序貌似并不能用线段树什么的处理。。。但这道题比较特殊:给字符串排序,暗示着只有26个“数字”,所以可以考虑用线段树记录区间内26个字母各出现了多少次。排序只要查询出这个区间内分别的出现次数,之后区间覆盖26次即可。 注:此题常数大。。而且。。。数据卡常。。。。#pragma GCC optimize("O3")#incl原创 2017-10-06 13:09:45 · 313 阅读 · 0 评论 -
线段树+平衡树(STL) 勤快的love 枫
问题 C: 勤快的love 枫时间限制: 1 Sec 内存限制: 128 MB题目描述小绝恋love 枫是一个出纳,经常需要做一些统计报表的工作。今天是绝恋love 枫的生日,小绝恋love 枫希望可以帮爸爸分担一些工作,作为他的生日礼物之一。经过仔细观察,小绝恋love 枫发现统计一张报表实际上是维护一个非负整数数列,并且进行一些查询操作。在最开始的时候,有一个长度为N原创 2017-08-01 21:38:51 · 390 阅读 · 0 评论 -
超神线段树 山海经
问题 K: 山海经时间限制: 1 Sec 内存限制: 128 MB题目描述“南山之首日鹊山。其首日招摇之山,临于西海之上,多桂,多金玉。有草焉,其状如韭而青华,其名日祝余,食之不饥……又东三百里,日堂庭之山,多棪木,多白猿,多水玉,多黄金。又东三百八十里,日猨翼之山,其中多怪兽,水多怪鱼,多白玉,多蝮虫,多怪蛇,名怪木,不可以上。……”《山海经》是以山原创 2017-08-06 21:21:51 · 535 阅读 · 0 评论 -
线段树+平衡树 beautiful
关于每个值求它的beauty,至多N^2*log(N)的效率,查询一棵线段树搞定。 那么难点在于求beauty。既然要求一个不断插值的中位数,考虑用平衡树,N^2枚举每一个区间(严格说不是每一个)找中位数。普通treap很轻松。 那我介绍一种神奇的而且能用set的做法,先膜拜神犇whm。 对于每个区间的起点,值有一个,然后不断向后推,每次加二,——可以利用这个性原创 2017-08-09 20:45:37 · 396 阅读 · 0 评论 -
线段树 高速公路(road)
问题 C: 高速公路(road) 时间限制: 2 Sec 内存限制: 256 MB 题目描述Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站。 Y901高速公路是一条由N-1段路以及N个收费站组成的东西向的链,我们按照由西向东的顺序将收费站依次编号为1~N,从收费站i行驶到i+1(或从i+1行驶到i)需要收取V原创 2017-09-21 19:27:50 · 346 阅读 · 0 评论 -
线段树 椎(CodeChef FEB14 COT5)
题面去内网找。。 先写题解,后写吐槽。。。把treap中序遍历一边就是一个单调的序列,又因为它保证了权值,键值都不互相重复,同一权值的点不会同时出现两个,那么可以把权值离散一下,用下标搞可线段树啊。。因此我们离线处理,先建出所有点的线段树,把键值设为0,然后一点一点搞即可。 那么如何求两点的距离呢? 首先我们会想到LCA,但是这个LCA可以用线段树解决,因为两点间键值最大的那个点就是他们的LC原创 2017-10-07 12:19:01 · 393 阅读 · 0 评论 -
线段树 bzoj2957 楼房重建
大概意思就是求序列从一位置开始的动态上升序列。 分块可过,但这一类题目其实可用线段树。 也就是维护每个区间的上升序列长度。下面这种求法只是用于当前节点所覆盖的区间完全被查询区间覆盖。 具体而言,查询时如果左儿子的max值< K,只去右儿子找。如果max_lc>=K,那么右儿子的长度全部符合,只要再递归着找左儿子即可。 因为这道题要求的区间是1~n,所以是很裸的题。。。 主体函数int q原创 2017-10-07 11:43:18 · 362 阅读 · 0 评论 -
李超线段树 [Heoi2013]Segment
问题 D: [Heoi2013]Segment 时间限制: 4 Sec 内存限制: 256 MB 题目描述 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。 输入第一行一个整数n,表示共n 个操作。 接下来n行,每行第一个数为0或1。 若该数为 0,则原创 2017-09-24 20:43:47 · 444 阅读 · 0 评论 -
树链剖分 树
很明显一点,T1树里每一条边都会被选取一次。把T2树的每一条边看成一个线段覆盖。每次找到一个只被覆盖了一次的线段,找到他是被那个区间覆盖的,把那个区间删去。如果最后能删完,就有解,删不完就是无解。 搞个树剖维护区间被覆盖的最小次数。但是较难的地方是:如何判断某一条边是被那个区间覆盖的。其实我们可以再维护一个值,把覆盖这个点的区间的编号加起来,因为我们找线段时只是找被覆盖一次的线段,所以一定就是他的原创 2017-10-24 20:51:03 · 306 阅读 · 0 评论