
数据结构
jokerwyt
这个作者很懒,什么都没留下…
展开
-
jzoj6513 树据结构(数据结构)
一个并不有趣的数据结构问题;ETT的用法。原创 2020-03-19 21:21:10 · 263 阅读 · 0 评论 -
jzoj6444 树高 (维护边连通块的点染色问题)
ETT维护边连通块括号序解决同色连通块问题。原创 2020-01-18 20:54:47 · 585 阅读 · 0 评论 -
CF679 E Bear and Bad Powers of 42(势能分析线段树)
简略题意给一个序列,支持三种操作:查询某个位置的值区间赋值不断给某个区间加一个数,直到其中不存在42的幂为止。n≤105,所有输入的数在109范围内n\leq 10^5,所有输入的数在10^9范围内n≤105,所有输入的数在109范围内思路看到这种操作基本上就是个势能分析线段树题构不出太大的数,所以每个数能加的次数就是log次。将每个位置设为他到下一个幂的距离(真实值为ne...原创 2019-11-07 20:35:54 · 347 阅读 · 0 评论 -
jzoj3615 【NOI2014模拟】数列 (曼哈顿距离转切比雪夫距离,坐标旋转)
题面给定一个长度为n的正整数数列a[i]。 定义2个位置的f值为两者位置差与数值差的和,即f(x,y)=|x-y|+|a[x]-a[y]|。 你需要写一个程序支持2种操作(k都是正整数): Modify x k:将第x个数的值修改为k。 Query x k:询问有几个i满足f(x,i)n解答建点(x,a[x]),原题转换为求曼哈顿距离小于等于k的点。 经典模型,将其坐原创 2018-01-23 20:17:28 · 340 阅读 · 0 评论 -
区间取min线段树的一种奇妙势能分析
比如这题 设势函数=每个点所管区间内互异值的个数总和 一开始势能最大nlogn 操作1使得势能最多增加logn 操作2我们这样处理:每个点记录一下最大值和次大值,若x大于最大值退掉,若x在最大值与次大值之间则打一个tag,若x小于次大值则递归下去。 可以发现,每次递归下去时势函数都至少减1,这时我们要花费向下走左右子树,共2的时间。那么,总的时间复杂度就控制在了势函数最大值(n+m) lo原创 2018-04-02 19:58:07 · 1498 阅读 · 0 评论 -
jzoj5629 【NOI2018模拟4.4】Map (业界毒瘤仙人掌缩环,线段树合并)
Description Rin是个特别好动的少女。 一天Rin来到了一个遥远的都市。这个都市有N个建筑,编号从1到N,其中市中心编号为1,这个都市有M条双向通行的街道,每条街道连接着两个不同的建筑,其中某些街道首尾相连连接成了一个环。Rin通过长时间的走访,已经清楚了这个都市的两个特点: 从市中心出发可以到达所有的建筑物。 任意一条街道最多存在与一个简单环中。令Rin心花...原创 2018-04-05 16:57:16 · 336 阅读 · 0 评论 -
GDOI2018 D2T3 木板 (性质: 随机数列的递增数列长度为log)
题意给定n个二元组(xi,yi),两个二元组i和j的价值定义为|xi−xj|∗max{yi,yj} 一个区间[L,R]的价值是其中任选两个二元组的最大价值。 给定m个操作,修改一个二元组的x或y,询问一个区间的价值。 n,m<=10^5。 数据保证初始的y和修改的y随机生成。有理有据期望复杂度随机数列,根据笛卡尔树树高log这个结论,可以得出递减序列长度也期望是log. ...原创 2018-05-08 21:34:40 · 371 阅读 · 0 评论 -
jzoj5678 【GDOI2018Day2模拟4.21】果树 (模型转化,覆盖线段树求在矩阵中点数)
DescribeNiroBC 姐姐是个活泼的少女,她十分喜欢爬树,而她家门口正好有一棵果树,正好满足了她爬树的需求。 这颗果树有N个节点,节点标号 1…N。每个节点长着一个果子,第i个节点上的果子颜色为 Ci 。 NiroBC姐姐每天都要爬树,每天都要选择一条有趣的路径 (u,v) 来爬。 一条路径被称作有趣的,当且仅当这条路径上的果子的颜色互不相同。 (u,v) 和 (v,u) 被视...原创 2018-04-21 23:04:33 · 403 阅读 · 0 评论 -
jzoj3329 【NOI2013模拟】树上的路径 (点分治,前K大问题)
题意给定一棵N个结点的树,结点用正整数1..N编号,每条边有一个正整数权值。用d(a,b)表示从结点a到结点b路径上经过边的权值和,其中要求a<ba<ba原创 2018-07-11 19:43:05 · 996 阅读 · 0 评论 -
可持久化平衡树: 无旋Treap
例题jzoj3658文本编辑器无旋Treap有旋Treap由于splay的存在而无用武之地了。 优点:代码较短,原生支持区间分裂合并,并支持可持久化。 缺点:较splay大概有2的常数。核心操作定义请戳split(root,x) 将树root分解为两颗树,第一颗为其中[1,x],第二颗为[x+1,size] 返回是保存上述两个根的pair。merge(a,...原创 2018-08-15 20:24:38 · 410 阅读 · 0 评论 -
bzoj2555 SubString (SAM+LCT维护子树大小/ETT)
Description懒得写背景了,给你一个字符串init,要求你支持两个操作(1):在当前字符串的后面插入一个字符串(2):询问字符串s在当前字符串中出现了几次?(作为连续子串)你必须在线支持这些操作。毒瘤显然就是sam求endpos大小,强套LCT。时隔多年又打了一次维护子树大小。大致就是维护:fsum[x]表示虚父亲为x的tsum和。tsum[x]表示x的splay和,=...原创 2018-10-20 22:09:59 · 408 阅读 · 0 评论 -
jzoj5987 【WC2019模拟2019.1.4】仙人掌毒题 (动态圆方树维护仙人掌)
失智又被题目吓到了考虑树的情况,连通块数目就是总点数-存在的边。考虑仙人掌的情况,连通块数目就是总点数-存在的边+存在的环因为是0/1分开考虑,所以所谓存在的X就是要求相关联的点颜色一样。使用lct维护圆方树就可以了。算一个环都变黑的概率可以容斥,因为总环中点数是不超过n+m的,暴力就可以了。#include <cstdio>#include <iostrea...原创 2019-01-05 15:34:26 · 589 阅读 · 0 评论 -
jzoj6327 数颜色 (LCT)
题面n,m,q≤105n,m,q \le 10^5n,m,q≤105分析很容易想出nlog2nn\log^2 nnlog2n的做法,用点减边的方法求连通块数,比如:树剖后维护颜色块,从右往左枚举左端点后维护右端点答案。用LCT的access操作代替上述做法的树剖。注意此处不能make_root,因此事实上操作数量还要翻倍…由于树剖的log很难卡满,因此上述两做法还是可以通过此题的...原创 2019-08-23 21:55:44 · 274 阅读 · 0 评论 -
jzoj5478. 【NOIP2017提高组】列队
题意一个n*m的矩阵,每个位置上有一个编号,每次取出一个编号(a,b),将(a,k) k>b左移一位,(z,m) z>a上移一位。 (左上角1,1),然后将取出的编号放在(n,m). n,m<=3e5 询问数q<=3e5分析发现每一次修改都只是修改个别点的位置,其他点的相对位置是不变的 考虑n颗动态开点的线段树(1..m+预留的q个位置),还有一颗额外维护一下最后一列(1..n+q)。 每一原创 2017-11-18 15:11:20 · 960 阅读 · 0 评论 -
jzoj5433 【NOIP2017提高A组集训10.28】图
题面有一个n个点A+B条边的无向连通图,有一变量x,每条边的权值都是一个关于x的简单多项式,其中有A条边的权值是k+x,另外B条边的权值是k-x,如果只保留权值形如k+x的边,那么这个图仍是一个连通图,如果只保留权值形如k-x的边,这个图也依然是一个连通图。 给出q组询问,每组询问给出x的值,问此时这个无向连通图的最小生成树权值是多少。 对于100%的数据,1<=n,q<=100000 , n-原创 2017-11-01 20:14:58 · 387 阅读 · 0 评论 -
树链剖分
待续原创 2016-05-20 19:30:16 · 490 阅读 · 0 评论 -
jzoj2573 序列
题目大概给一个长度为N的序列,请删除尽量少的数,使得新序列中满足第I个数为I条件的数最多。Input第一行有一个正整数N。 第二行有N个正整数Ai,表示原序列中第I个数为Ai。Output只有一个整数ANS,表示最多能有多少个数满足条件。解法首先不难发现,i-ai<0的数是肯定不能归位的,然后我们忽略他. 最直观的一个想法就是动态规划,设fi,jfi,j为在原序列第i个位置,删了j个数的最大收益原创 2016-08-16 20:40:22 · 690 阅读 · 0 评论 -
jzoj2540 采药2
看到标题还以为是一道水题 数据范围 50%的数据中 N,M ≤ 1000; 100%的数据中 N,M ≤ 100000,Ti,Vi ≤10。 很容易发现十万个物品却只有100种物品,就是多重背包.做法1最简单的做法就是贪心 价格相同要优先取收益大的.如果收益大的不够才往下取,这样的话最坏时间复杂度就是 O(10*(n+m)) 正确性显然吧… 没有理由去选价格相同收益却小的.做法2将每原创 2016-08-12 13:45:22 · 413 阅读 · 0 评论 -
jzoj4817 Square
题目描述想法首先一个显然的DP 设Fi,jF_{i,j}为第i,j个位置为右下角的最大正方形,我们有 Fi,j=min(Fi−1,j,Fi,j−1,Fi−1,j−1)+1F_{i,j}=min(F_{i-1,j},F_{i,j-1},F_{i-1,j-1})+1 显然如果左边,上面,斜上方有任意一个不能作为边长为K的正方形的右下角,则当前这个肯定不能作为边长K+1的右下角然后对于每一个询问,他原创 2016-10-12 19:10:33 · 374 阅读 · 0 评论 -
jzoj4883 灵知的太阳信仰
题目描述每次核融的时候,空都会选取一些原子,排成一列。然后,她会将原子序列分成一些段,并将每段进行一次核融。 一个原子有两个属性:质子数和中子数。 每一段需要满足以下条件: 1、同种元素会发生相互排斥,因此,同一段中不能存在两个质子数相同的原子。 2、核融时,空需要对一段原子加以防护,防护罩的数值等于这段中最大的中子数。换句话说,如果这段原子的中子数最大为x,那么空需要付出x的代价建立防护罩原创 2016-11-17 19:07:52 · 559 阅读 · 0 评论 -
浅析树状数组
原名Fenwick Tree/Binary Index Tree存在的必要树状数组能做的,线段树都能做,而且学上来线段树比他简单许多 但树状数组的时空复杂度相对于线段树都优了许多,看下面这张对比图 一个显然的结论 节点数从2n减少至n, 这样一来,虽然说其操作复杂度与线段树同为log n,但常数却差别很大,大数据通常都是上百ms的差距 而且树状数组10行能解决的事情,线段树要30行线段树的原创 2016-07-18 11:04:20 · 509 阅读 · 0 评论 -
初窥splay
大爷们都去比赛了,有点小无聊splay 伸展树 by Tarjan推荐几篇splay文,很通俗易懂。 NOI2005维护数列-lyd splay复习小记-Facico 具体的不多解释了, 写一下自己的理解:(1) 为了保证势能,需要按照一定的方法splay。(不会证明就背板子吧233,比如我) (2) 平衡树的rotate很玄学,顺序摆不好会粗事情, 如果自己想的话有点烧脑筋..(真辣原创 2017-04-29 22:06:36 · 594 阅读 · 0 评论 -
jzoj5051 【GDOI2017模拟一试4.11】平行宇宙 [贪心,并查集]
Problem 众所周知,根据“M 理论”对宇宙的描述,无数的平行宇宙漂浮在广阔无垠的物质世界里,而我们的世界只是众多宇宙泡泡中不起眼的一个。 在公元XXXX 年,伟大的Q 博士终于创造了一种能在宇宙和宇宙中穿梭的通道,从此在科学一个黑暗的领域打开了光明的大门。由于技术还很不成熟,所以刚开始一个宇宙只能打通一条到另外一个宇宙的通道,通道是单向的,经过每条通道所花费的时间是单位1,而我们所在原创 2017-04-27 20:22:05 · 738 阅读 · 0 评论 -
jzoj4417 【HNOI2016模拟4.1】神奇的字符串 (映射,权值线段树)
题意分析一开始看到的时候一脸黑人问号 注意到条件(n,a)=1(n,a)=1,这意味着∀c[i]≠c[j]\forall c[i] \not= c[j]. 转换一下问题,我们用数据结构统计s[i]s[i]对每一个开头c[i]c[i]的贡献。因为题目询问是不同的个数,所以s[i]=1s[i]=1如果有贡献,那么它一定对应c[j]=0(j不一定是开头)c[j]=0(j不一定是开头) 于是我们按照f原创 2017-07-16 16:38:23 · 602 阅读 · 0 评论 -
jzoj5290 【NOIP2017提高组A组模拟8.17】行程的交集 (树上路径交,dfs序+树状数组维护姿势)
题面豪哥生活在一个n个点的树形城市里面,每一天都要走来走去。虽然走的是比较的多,但是豪哥在这个城市里面的朋友并不是很多。 当某一天,猴哥给他展现了一下大佬风范之后,豪哥决定要获得一些交往机会来提升交往能力。豪哥现在已经物色上了一条友,打算和它(豪哥并不让吃瓜群众知道性别)交往。豪哥现在spy了一下这个人的所有行程起点和终点,豪哥打算从终点开始走到起点与其相遇。但是豪哥是想找话题的,他想知道以原创 2017-08-17 16:29:25 · 1114 阅读 · 0 评论 -
jzoj5249 【NOIP2017提高A组模拟8.10】文本编辑器 (序列修改类问题,数据结构)
题面分析splay的话是过不了最后一个点的。 显而易见的我们可以考虑链表+tag,但是细节很多。 因为翻转只翻转两个光标中间的地方,我们考虑将中间的放到一个队列里,然后左右两边分别开一个栈存。 翻转的话就调换一下队列的head与tail,并且将正方向取反。 +正方向就相当于在序列上的后一个位置。 想一想,这样设计的话别的操作不需要特殊考虑,和没翻转的情况一样做就行。 还需要考虑l,r光标原创 2017-08-10 17:31:24 · 416 阅读 · 0 评论 -
jzoj5402 【NOIP2017提高A组模拟10.8】God Knows
分析考虑一个简单的dp,设f[i]表示现在1..i的连线全部被删除,最后一个选的是i的代价。转移有些特别,从j=[1,i)中选出一条不与i-p[i]相交的并且(i,j)中没有不与这两条相交的,就可以f[i]=f[j]+c[i]. 想一想答案是什么? 使得(i,n]中所有连线都与i-p[i]相交,则此f[i]可以作为答案。 也就是(i,n]中所有p[j]小于p[i]的这个dp是O(n^2)的,我原创 2017-10-20 19:43:16 · 622 阅读 · 0 评论 -
jzoj2931 书架
Description当Farmer John闲下来的时候,他喜欢坐下来读一本好书。 多年来,他已经收集了N本书 (1 <= N <= 100,000)。 他想要建立一个多层书架,来存放它们。 每本书 i 拥有一个宽度 W(i)和一个高度 H(i)。 所有的书需要按顺序,放到书架的每一层。 举例来说,第一层书架放k本书,应该放书1…k;第二层书架从第k+1本书开始放……。 每原创 2016-07-11 19:23:00 · 723 阅读 · 0 评论