
数据结构
衛宮
I will be back
展开
-
Ultra-QuickSort
任意给定一个集合 s, 如果用 t[val] 保存数值 val 在集合 s 中出现的次数, 那么数组 t 在[l, r]上的区间和就表示集合 s 中范围在 [l, r] 内的数有多少个.在集合 s 的数值范围上建立一个树状数组, 来维护 t 的前缀和. 这样即使在集合 s 中插入或删除一个数, 也可以高效地进行统计.DescriptionIn this problem, you have to a...原创 2018-04-09 19:05:51 · 258 阅读 · 1 评论 -
SuperMemo POJ3580 TREAP
SuperMemo TreapPOJ3580-SuperMemo典型的区间操作水题, 我们要注意的点是REVOLVE操作中的T可能是负数.我因为modify函数写错了, WA了好几次, 要细心.#include <iostream>#include <algorithm>#include <vector>#include <que...原创 2018-08-09 20:09:28 · 341 阅读 · 0 评论 -
[洛谷P3258, JLOI2014]松鼠的新家
题目描述松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的。天哪,他居然真的住在”树“上。松鼠想邀请小熊维尼前来参观,并且还指定一份参观指南,他希望维尼能够按照他的指南顺序,先去a1,再去a2,......,最后到an,去参观新家。可是这样会导致维尼重复走很多房间,懒惰的维尼不停地推辞。可是松鼠告诉他,每...原创 2018-08-01 11:40:24 · 199 阅读 · 0 评论 -
[洛谷P2023, AHOI2009]维护序列
这是一道典型的线段树板子题. hzwer说过, 对于线段树的多标记 lazy-tag 可以根据标记的优先级, 优先级高的先下传.但是我一直思路有点问题, 比如说这道题.这道题要求的是区间加法, 区间乘法, 要查询的是区间和.我开始的想法是, 不管是加法标记还是乘法标记都是相斥的, 要进行加法, 就必须把乘法标记清零(其实是清一),要进行乘法, 就必须把加法标记清零.这样想的话,...原创 2018-08-01 17:44:30 · 199 阅读 · 0 评论 -
[IOI2014, 洛谷4560]Wall城墙
给定一个长度为 n 且初始值全为 0 的序列。你需要支持以下两种操作:Add L,R,h:将序列 [L,R] 内所有值小于 h 的元素都赋为 h ,此时不改变高度大于 h 的元素值 Remove L,R,h :将序列 [L,R] 内所有值大于 h 的元素都赋为 h ,此时不改变高度小于 h 的元素值你需要输出进行 k 次上述操作之后的序列。这道题处看时没有一点想法, 脑海中只有“啊, ...原创 2018-08-01 22:25:58 · 225 阅读 · 0 评论 -
[洛谷P2234, HNOI2002]营业额统计, fhq-treap
题目描述Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管...原创 2018-08-06 18:46:24 · 191 阅读 · 0 评论 -
笛卡尔树
笛卡尔树性质构造笛卡尔树笛卡尔树是一种同时满足二叉搜索树和堆的性质的数据结构. 可以在一个数组上构造出来(时间复杂度可以达到 O(n)O(n)O(n) ). 树中节点有几个属性, key(节点元素的大小, 优先级priority), index(节点在元素组中的索引), left(左子节点), right(右子节点), parent(父节点).性质...原创 2018-08-06 18:49:39 · 229 阅读 · 0 评论 -
[NOI2004, 洛谷P1486]郁闷的出纳员
题目描述OIER公司是一家大型专业化软件公司,有着数以万计的员工。作为一名出纳员,我的任务之一便是统计每位员工的工资。这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资。如果他心情好,就可能把每位员工的工资加上一个相同的量。反之,如果心情不好,就可能把他们的工资扣除一个相同的量。我真不知道除了调工资他还做什么其它事情。工资的频繁调整很让员工反感,尤其是集体扣除...原创 2018-08-07 12:21:43 · 170 阅读 · 0 评论 -
[HNOI2004, 洛谷P2286]宠物收容所
题目描述凡凡开了一间宠物收养场。收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a<2^31),而他也给每个处在收养场的宠物一个特点值。这样他就能够很方便的处理整个领养宠物的过程了,宠物收养场总是会有两种情况发生:被遗弃的宠...原创 2018-08-07 16:13:04 · 171 阅读 · 0 评论 -
Treap的区间操作 NOI2005维护序列
Fhq-Treap的序列操作Fhq-Treap的序列操作节点划分合并笛卡尔树性质构造插入删除求和最大子列和修改翻转比如NOI2005 维护序列, 这道题应该如何应用Fhq-Treap来维护呢?1节点我们还是采用指针式的Fhq-Treap. 为了可以把update(), spread(), assign(), reverse(...原创 2018-08-09 20:05:43 · 935 阅读 · 0 评论 -
[NOIP2013]货车运输
题目描述A 国有 n 座城市,编号从 1 到 n ,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。输入输出格式输入格式: 第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道路。 接下来 m 行每行 3 个整数 x,y,z,每两个...原创 2018-07-27 12:52:40 · 265 阅读 · 0 评论 -
花神游历各国
当时在火车上思考的, 思考了半天突然发现了开方操作不是平方操作, 开多了就成1了然后我发现这样就可以暴力的去做了, 因为整个数列最多开6次, 之后就都成了1.我特别发现数列是没有零的, 如果没有0值的话, 一个区间的和如果等于他的长度, 就不需要开深入修改了。洛谷P4145的数据是没有零的, libreOj的信息学奥赛一本通提高篇的练习题是有零的。今天交了几次, 但是都不对, 我发...原创 2018-07-30 16:19:44 · 218 阅读 · 0 评论 -
楼兰图腾
在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这N个点的相对位置有关,因此不...原创 2018-04-09 20:10:09 · 699 阅读 · 0 评论 -
UVA11235: Frequent values(RMQ)
You are given a sequence of n integers a1 , a2 , . . . , an in non-decreasing order. In addition to that, you are given several queries consisting of indices i and j (1 ≤ i ≤ j ≤ n). For each query, d...原创 2018-05-05 17:41:21 · 196 阅读 · 0 评论 -
poi 2182 2828 树状数组倍增查询
这种题的主要目的是找位置, 比如第一个前缀和等于k的位置,1. 可以用树状数组 + 二分, 时间为logn * logn, 这样时间稍微慢了些;2. 用倍增法这片博文写得很好, http://www.hawstein.com/posts/binary-indexed-trees.htmlint getKPos(int k){ int bitMask = bthPow[upper_b...原创 2018-06-19 21:44:40 · 538 阅读 · 0 评论 -
线段树常规操作
关于线段树的区间修改(加值), 区间查询(求和), 利用延迟化的思想, 是比较容易的.主要是想好标记下传中lazy-tag的意义是什么, 这个思路中的add标记的意义是: 当前节点没有问题, 但是子节点要受到当前节点标记的影响.#include <iostream>#include <algorithm>#include <cstdlib>#in...原创 2018-07-23 17:48:32 · 186 阅读 · 0 评论 -
树状数组
给n, m,给n个数字, 表示位置i的数字的排名,再给m个询问, 一个询问由a, b组成, 代表着要询问前i个数字中, 排名前b的数目. 当时想了好久好久, 但是一点意识也没有qwq.后来...看了别人的想法后, 突然就懂了点... 这种问题吧, 我感觉是要先确定一些顺序, 再根据已有的顺序进行操作.比如这里, 先确定询问的顺序, 把询问依据a排序, 这样的话, 对...原创 2018-07-26 10:27:13 · 100 阅读 · 0 评论 -
[计蒜客-树状数组线段树]帕吉的肉钩
分析题意, 是一道典型的线段树题目.要求做到区间赋值(树状数组应该无法做到), 区间求和两个操作.开始的时候思路不清楚, 后来要注意线段树的 up 和 down 操作.需要注意的是有lazy-tag的节点, 它本身的信息是完全正确的, 子节点的信息是待更新的.这也就是说, 当需要用到这些子节点的信息时在进行更新.#include <iostream>#inclu...原创 2018-07-21 17:22:41 · 243 阅读 · 0 评论 -
[NOI2002]银河英雄传说
有一个划分为N列的星际战场, 各列依次编号为 1, 2, ···, N. 有 N 艘战舰, 也依次编号为 1 - N, 初始时, 第 i 号战舰在第 i 列.T条指令, 有两种格式.1. M i j, 表示让第 i 号战舰所在列的全部战舰保持原有的顺序, 接在第 j 号战舰所在列的尾部.2. C i j, 表示询问第 i 号战舰与第 j 号战舰是否处在同一列中, 如果在同一列中, 他们...原创 2018-07-30 09:41:24 · 381 阅读 · 0 评论 -
[AHOI2008]聚会
题目描述欢乐岛上有个非常好玩的游戏,叫做“紧急集合”。在岛上分散有N个等待点,有N-1条道路连接着它们,每一条道路都连接某两个等待点,且通过这些道路可以走遍所有的等待点,通过道路从一个点到另一个点要花费一个游戏币。参加游戏的人三人一组,开始的时候,所有人员均任意分散在各个等待点上(每个点同时允许多个人等待),每个人均带有足够多的游戏币(用于支付使用道路的花费)、地图(标明等待点之间道路连接...原创 2018-07-30 11:32:28 · 838 阅读 · 0 评论 -
Fhq-Treap
FHQ Treapsplitmergeinsertremoveprecursorsuccessorthe first kget rankFHQ TreapFHQ Treap是fhq(范浩强)大神发明的非常好用非常有思想的函数式二叉搜索树.其主要操作分为两个merge, split.fhq-treap的每个节点只存一个数字, 也就是...原创 2018-08-07 16:58:51 · 2224 阅读 · 1 评论