![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
什么都不会的菜鸡
这个作者很懒,什么都没留下…
展开
-
Balance of the Force 【二分图+枚举】
传送们废话:队友告诉我题意后,我第一反应是二分答案+2-sat,问了下数据范围2e5....,芽儿呦边都建不了。。。。训练赛过程中也没有把这道题A掉,队友其实已经想到了解法的一部分。解题思路:首先我们肯定得判断答案是否有解,即对冲突条件建边,然后判断是否为二分图。如果有解:对于每一个连通块来讲,存在两种方案分配(因为存在冲突条件限制),但是两种方案不能同时选择,答案要求我们选择方案中极差...原创 2019-09-25 17:41:48 · 252 阅读 · 0 评论 -
[CQOI2011]动态逆序对 【主席树+树状数组】
传送门废话:这道题和当初队长他们去电子科技大学的校赛A题几乎是一样,这道题没有挂在他们的OJ上,无意之间发现了这道题,赶紧补一下。这道题的做法也太多了吧。。。。。分块会板子(这道题不会),CDQ分治不会,只会大佬说的动态主席树板子题,然后拿来改一下就能过了。。。解题思路:求解逆序数,我们常常用到树状数字来解决。对于每一个数num[i]对逆序数的贡献:或者是,对于删掉每一个数,我们只需要将他的贡...原创 2019-05-09 15:07:14 · 328 阅读 · 2 评论 -
P2617 Dynamic Rankings【动态第K大 树状数组+主席树】
传送门中文题目,题意不再叙述!实现方法:静态第K大,我们利用就是前缀和的思想来建立的线段树,[L,R]的状态由R状态的线段树减去L-1状态的线段树得到的。既然就是前缀和而且存在修改操作,我们可以利用树状数组来解决这个问题。原本处于下标 i 的线段树 代表[1 - i ]所有元素的线段树,那么在树状数组中我们要怎么得到同样的一棵树呢?我们知道树状数组中存在 lowbit(x) 操作,我们可以...原创 2019-05-09 14:45:55 · 197 阅读 · 3 评论 -
The Stream of Corning 2【可持久化线段树】
2018 ICPC Asia Nakhon Pathom Regional Contest K题意上的重点:In the given inputs, the CURRENT_TIMESTAMPS will be strictly increasing between consecutive events.(给定的事件时间戳是严格递增的)解题思路:方法①:题目上是事件和查询都是一起给出的,不能...原创 2019-05-06 16:29:55 · 184 阅读 · 0 评论 -
Power OJ 2840 伯陵防线【可持久化线段树】
传送门废话一波:这道题是几个月前比赛的题,当时就我一个人开了这道题,我当时写的可持久化线段树,但是思维出错了,一直WA。这道题还可以用树状数组或者线段树来写,但是我想不到。。。。出题人博客:https://blog.csdn.net/swust5120166213/article/details/86703350解题思路:一对华农兄弟的条件就是两个人均在对方的防御范围内。我们可以认为为...原创 2019-05-08 22:25:17 · 198 阅读 · 0 评论 -
[SCOI2016] 美味 【可持久化线段树+位运算】
传送门题目描述:一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n)。有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi 。因此,第 i 位顾客认为第 j 道菜的美味度为 bi XOR (aj+xi),XOR 表示异或运算。第 i 位顾客希望从这些菜中挑出他认为最美味的菜,即美味值最大的菜,但由于价格等因素,他只...原创 2019-04-30 17:21:16 · 279 阅读 · 0 评论 -
SPOJ D-query 【可持久化线段树】
传送门题目描述:多次询问一个区间内不同数的数量。解题思路:一个区间内存在相同的数,所以我们的线段树就不能维护数,应该去维护下标?为什么去维护下标呢,就算一个数相同,但是它们的下标肯定是不同的,我们的线段树维护下标存在的情况。如果区间内存在重复的数,意味着不同下标对应相同的数,如果我们记录多个下标答案就会重复,我们要怎么去解决这个问题呢?我们把下标右移(相同的数,我们记录的下标只记录最右边的...原创 2019-04-25 17:33:01 · 112 阅读 · 0 评论 -
[CQOI2015]任务查询系统 【可持久化线段树+差分】
传送门最开始思路都想到差分了,但是没有继续想下去。解题思路:利用差分来解决区间的问题,因为最多有 1e5 个任务,所以最多有 2e5 次修改,利用时间戳来建树,首先让新建的这棵树等于上一颗树,如果这次没有修改操作,就跳过,否则就在这一棵树上进行修改。坑点:在进行询问时,如果碰到递归终点,不能返回该点的权值和,而应该返回 次数k * 权值,因为存在相同的优先级。///#include&...原创 2019-04-29 20:10:36 · 109 阅读 · 0 评论 -
Count on a tree SPOJ - COT 【可持久化线段树 树上第K小】
传送门题目描述:给你一个树,每个点有权值,多次询问两点之间的链的第k小权值掉入的坑:必须离散化,不离散化过不了,(第一反应用的二分答案,发现没有题目上没给数据范围,不离散化,会RE到死。。。)解题思路:我们每次儿子的状态室友父亲更新过来,我们要如何得到这条链的信息呢?首先LCA我们肯定是会用到的,这和我们求树上一条链上的距离类似,这条链上的信息, 如果 a 和 b 为这条链的两个端点,那么...原创 2019-04-24 19:02:29 · 151 阅读 · 0 评论 -
2019年ICPC南昌网络赛 J. Distance on the tree【树链剖分/DFS序+可持久化线段树】
传送门题目描述:给你一个树,多次询问一条链上边权小于等于 k 边的数量。解题思路:树链剖分+可持久化线段树:主要是两个模板的合并使用,主要细节即可(可持久化主席树查询时注意时间戳)。DFS序+可持久化线段树:每个儿子的状态都是由父亲得到的,我们只需要用父亲的状态来更新儿子即可,最后求一个LCA,查询两个端点和LCA的状态改变量即可。这道题也可以树链剖分+树状数组。。。我不会。。。树...原创 2019-04-24 10:16:00 · 314 阅读 · 0 评论 -
POJ - 3481 Double Queue 【Splay 模板题】
传送门最基本的Splay模板题,没有任何花里胡哨的操作,可以用于加深理解模板中每个函数。Splay学习博客:https://baijiahao.baidu.com/s?id=1613228134219334653&wfr=spider&for=pchttps://www.cnblogs.com/cjyyb/p/7499020.html ///推荐当...原创 2019-05-27 17:10:50 · 143 阅读 · 0 评论 -
P2048 [NOI2010]超级钢琴 【主席树+前缀和+优先队列】
传送门题目描述小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中Ai可正可负。一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的,当且仅当这两个...原创 2019-05-23 14:18:46 · 194 阅读 · 0 评论 -
Comet OJ - Contest #8 D 菜菜种菜
传送门官方题解(讲的很好)解法:我们将所有土地排成一行,可以很好的转化为区间问题,每次询问一个区间 [L,R] 中符合条件土地的菜值和。想要一个土地符合条件,它能够到达的土地必须在询问区间之外或者不存在。意思就是它左边最近能够到达的土地 x ( 满足条件 x<L ,不存在可以到达的土地 x=0 ),同理它右边最近能够到达的土地 y (满足条件 y>R ,不存在可以到达的土地 ...原创 2019-08-14 10:32:33 · 153 阅读 · 0 评论 -
2019 HDU 多校三 Game【博弈+莫队】
传送门首先就给我们一个玩游戏的策略,很明显知道 SG(x)=x ,想要 Alice 赢,区间SG(x)异或和不为0,我们可以直接处理前缀异或和,然后询问区间不同的异或对,典型的带修莫队,注意细节就可以了。注意答案会爆 int 。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;con...原创 2019-08-01 10:39:32 · 231 阅读 · 1 评论 -
P1903 [国家集训队]数颜色 / 维护队列 【带修莫队】
传送门带修莫队的模板题,多了时间这一维,同样是按照莫队暴力的思想,如果时间跑过了,就将时间倒流,否则就时光加速。结合代码更容易理解顺便贴个代码当模板代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e6 + 5;int n, m, ans[maxn];int pos[maxn],...原创 2019-07-31 20:08:47 · 223 阅读 · 6 评论 -
2019 HDU 多校二
1002Beauty Of Unimodal SequenceLIS+贪心:up[i][0] 表示以 i 结尾的最长严格上升序列的最长长度;up[i][1] 表示以 i 结尾的单峰最长的最长长度;down[i][0] 表示以 i 开头的最长严格下降序列的最长长度;down[i][1] 表示以 i 开头的单峰最长的最长长度;上面的四个数组我们可以用线段树很容易就可以维护出来,然...原创 2019-07-25 14:13:38 · 198 阅读 · 2 评论 -
Codeforces 633H. Fibonacci-ish II【莫队+线段树+公式】
传送门参看博客:https://blog.csdn.net/zearot/article/details/50850792题意:将询问区间中[ l , r ]中的数排序去重,然后求 d 为排序去重后的长度。解题思路:正解就是莫队算法,但是这道题的 add 操作和 del 操作很不好实现。首先要离散化,然后对每个数进行计数,只有数量从0到1或者从1到0时才真正进行集合的加入删除操作而...原创 2019-06-04 12:04:25 · 230 阅读 · 2 评论 -
P3674 小清新人渣的本愿【莫队+ bitset】
传送门bitset 大法好啊!!!bitset 用法:https://blog.csdn.net/vocaloid01/article/details/82798450解题思路:用 bitset 的每一位代表每一个数字是否出现,s1记录每一个数x出现的位置,s2记录 maxn -x 出现的位置 (maxn可以为数值上限)操作①:要求区间中是否能够找到满足条件的(x,y) x -...原创 2019-06-06 19:56:01 · 186 阅读 · 0 评论 -
P4113 [HEOI2012]采花 【树状数组 AC】【莫队/主席树 TLE】
传送门题意简述:给定一个长度为n的序列,有m次询问,每次询问一段区间,求区间中有多少个数出现次数超过1次这道题真的有点恶心。。。在洛谷上属于莫队,但是莫队会T,数据居然有2e6。莫队的想法很简单就不多提了。主席树:这道题和HH的项链有异曲同工之妙,后者这道题:将每个数右靠,保证区间中只存在一个相同的数。前者:我们用i棵线段树,维护[1,i ]的信息。如果区间中相同的数的数...原创 2019-06-06 14:45:17 · 258 阅读 · 0 评论 -
P4137 Rmq Problem / mex 【莫队】【主席树+思维】
传送门题目上给的 ai <= 1e9,第一反应就是离散化,细想一下区间一共就2e5,答案最大不就是2e5吗,大于2e5的数我们可以忽略,这样就可以减去离散化的步骤。莫队解题思路:莫队的就是优雅的暴力,我们可以直接暴力去找答案(稍微优雅一下),我们记录当前区间中每个数出现的位置,当我们的区间移动时。增加操作:如果增加的数==Ans,那我们的答案就会更新,然后暴力向后判断(只有这里最暴力...原创 2019-06-05 22:20:11 · 221 阅读 · 0 评论 -
P5283 [十二省联考2019]异或粽子 【前缀异或+可持久化Trie+优先队列】
传送门解题思路:区间的的异或和我们利用前缀异或来处理这道题和超级钢琴十分类似,只是转化成立异或,我们可以利用Tire来解决问题,因为要多次询问区间第K大异或,我们利用可持久化Trie来维护前缀异或和。我们固定区间的右端点,把每个每个区间的异或最大值放于堆中去维护,每当我们取出一个数后,我们往堆里面放入下一个异或最大值。类似再Trie树上询问区间第K大异或。代码:#include<...原创 2019-05-23 16:20:47 · 270 阅读 · 0 评论 -
美味佳肴 【思维+可持久化线段树】
传送门题目描述:众所周知,天才程序员菜哭武是一个伟大的厨师。这天,张老师和石头来到菜哭武家做客,想尝一尝菜哭武的手艺。菜哭武手上有n种食材,每种食材个数无限多,编号为i的食材有一个美味度ai。一道菜中,每种编号的食材至多有一个,而这道菜的美味度是这道菜包含的食材的美味度之和。每次张老师会指定一个编号l, 石头会指定一个编号r(l <= r),然后菜哭武会在编号在[l, r]中...原创 2019-04-23 18:25:47 · 204 阅读 · 0 评论 -
牛客Wannafly挑战赛4 树的距离【DFS序+可持久化线段树】
传送门题目描述:wyf非常喜欢树。一棵有根数树上有N个节点,1号点是他的根,每条边都有一个距离,而wyf是个爱问奇怪问题的熊孩子,他想知道对于某个点x,以x为根的子树上,所有与x距离大于等于k的点与x的距离之和。输入描述:第一行一个正整数N接下来N-1描述这棵树,每行两个数第i行两个数p和D表示树上有一条p到i+1长度为D的边。(p<=i)下面一行一个正整数Q表示wyf的...原创 2019-04-22 18:25:44 · 283 阅读 · 0 评论 -
Chino with Rewrite 【树链剖分+并查集+状压线段树】
传送门中文题面就不在阐述解题思路:题目上的操作2 对一棵树的一条链进行操作,很容易想到树链剖分。由操作1给的叙述,我们能够想到并查集离线建树。要求一个链上知识点种类的数量,而且 wi 不超过60,利用状压来解决。///#include<bits/stdc++.h>///#include<unordered_maps>///#include<un...原创 2019-04-21 19:11:53 · 226 阅读 · 0 评论 -
Codeforces D. Monitor
二维线段树模板:///#include<bits/stdc++.h>///#include<unordered_map>///#include<unordered_set>#include<iostream>#include<algorithm>#include<cstdio>#include<cst...原创 2018-12-10 15:56:38 · 182 阅读 · 0 评论 -
Gym 101889F — Fundraising 树状数组+离散化+带权上升子序列
题意:给你一些人,每个人有两个特性和一个价值,如果两个人的特性完全相等则可以合并,否则必须一个人的两个特性必须严格大于另一个人才能合并,问:最终可以的到的最大价值。 解题思路:看到别人的博客里面有带权上升子序列,让我想起了最长上升子序列 nlogn 的解法:在数组下标 1—i中最长上升子序列结尾数字最小值(一种贪心)。网址链接:https://blog.csdn.net/qq_37555...原创 2019-01-02 14:52:57 · 239 阅读 · 0 评论 -
扩展kmp(转载)
原文:https://blog.csdn.net/dyx404514/article/details/41831947 拓展kmp是对KMP算法的扩展,它解决如下问题:定义母串S,和字串T,设S的长度为n,T的长度为m,求T与S的每一个后缀的最长公共前缀,也就是说,设extend数组,extend[i]表示T与S[i,n-1]的最长公共前缀,要求出所有extend[i](0<=i<...转载 2019-01-19 20:33:21 · 124 阅读 · 0 评论 -
线段树+扫描线
看了一天才明白了参考博客:https://blog.csdn.net/otowa/article/details/50695401 看完参考博客在看看我对这个的理解。我的理解:扫描线是一种想法,方便我们去理解,线段的作用:维护我们所需要的值。比我们要求上图的面积,我们可以将图形看成上图的形式(同种颜色我们求一次面积,最后相加)我们所说的扫描线其实说的就是平行于X轴的边(...原创 2019-01-20 17:23:19 · 521 阅读 · 0 评论 -
HDU 4419 扫描线+线段树
自己的思路:题目给了三种颜色 R G B,能够组成7种颜色,我想到用状态压缩(R =1,G=2,B=4),因为他的颜色是由他的种类数决定的,所以我用异或来表示他的覆盖情况(这是我傻逼的地方,我没理解基础的 +1,-1 为什么),后面debug发现我的覆盖情况出现的负值的情况,然后就没有思路了。 大佬博客:https://blog.csdn.net/ACM_cxlove/article/d...原创 2019-01-21 14:21:59 · 123 阅读 · 0 评论 -
POJ - 1177 矩形周长并
参考博客:http://www.cnblogs.com/scau20110726/archive/2013/04/13/3018687.html方法:把矩形分成横线和竖线去处理,可知是完全相同的操作,我们来讲下怎么算出横线部分,竖线部分就是照搬即可。将横线保存在一个表中,按横线所处的竖直位置排序(升序),另外每条横线带一个标记值,原矩形的下线为1,上线为-1(对应过去就是插入线段和删除线...原创 2019-01-21 16:53:25 · 149 阅读 · 0 评论 -
HDU 4639 离线树状数组
题目链接:传送门题意:给你一个 1—n 的排列,询问你区间 [ L,R ]中连续数的组数 比如 1 4 3 5 6,就是3 (4 5 6一组,1 一组 ,3 一组)。///#include<bits/stdc++.h>///#include<unordered_map>///#include<unordered_set>#include<...原创 2019-01-25 20:34:06 · 93 阅读 · 0 评论 -
【HDU 4348】 To the moon 可持久化线段树
题目链接:传送门简述题意:一个长度为n的数组,4种操作 : (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 。 (2)Q l r:查询当前时间戳区间[l,r]中所有数的和 。 (3)H l r t:查询时间戳t区间[l,r]的和 。 (4)B t:将当前时间戳置为t 。回到过去t时刻,t之后的信息都会消失,即就不会再向前跳跃。...原创 2019-01-25 15:58:51 · 180 阅读 · 0 评论 -
HDU 4417 Super Mario 可持久化线段树
题意:询问区间[ L , R] 中比 H 小的数的个数,注意题目中给的区间是从0下标开始的。思路:用upper_bound跑出 H 的相对大小,去查找 L-1 和 R 时间戳小于H的的改变数量注意点:如果找到的H相对大小为0,就不用去寻找(否则会T),可以直接输出0即可。///#include<bits/stdc++.h>///#include<unordered...原创 2019-01-24 22:04:54 · 119 阅读 · 0 评论 -
“东信杯”广西大学第一届程序设计竞赛 J 【RMQ】
题目链接:传送门 题意:题意很简单,两种操作,一:区间每一个数或上x,二:求区间每个数或上x的总和。 (或 ' | ')做法:最开始我想的就是单点更新,果断队友T了,然后队友用位来储存数字,然后延迟标记区间更新就过了,虽然找了很久bug。 ///#include<bits/stdc++.h>///#include<unordered_map>...原创 2018-11-28 18:40:20 · 434 阅读 · 0 评论 -
hash算法
计算理论中,没有Hash函数的说法,只有单向函数的说法。所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据。用“人 类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很容易计算出其结果来;而当给定结果的时候,很难计算出输入来,这就是单项函数。各种加密函 数都可以被认为是单向函数的逼近。Hash函数(或者成为散列函数)也可以看成是单向函数的一个逼近。即它接近于满足单向...转载 2018-10-22 20:01:48 · 226 阅读 · 0 评论 -
Bounce 弹飞绵羊 HYSBZ - 2002 【分块】
传送门Description某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得...原创 2019-04-08 16:38:01 · 172 阅读 · 0 评论 -
计蒜客 青出于蓝胜于蓝 【DFS序 + 树状数组】
传送门题意 :看了题面好久,还是画了一个图才理解,意思就是根的排名为p,告诉你 n - 1 个关系,告诉你排名 ui 和 vi 是存在师徒关系。思路:题目上给的就是排名就是 1- n ,还不用离散化,直接 dfs +树状数组 ,记录一个dfs前的状态和dfs后的状态,两个状态的差值就是答案。附上代码:///#include<bits/stdc++.h>///#inc...原创 2019-04-02 12:41:28 · 177 阅读 · 0 评论 -
牛客小白月赛9 树上求和【树链剖分模板】
传送门题目描述:给你一棵根为1的有N个节点的树,以及Q次操作。每次操作诸如:1 x y:将节点x所在的子树的所有节点的权值加上y2 x:询问x所在子树的所有节点的权值的平方和,答案模23333后输出输入描述:第一行两个整数N,Q第二行N个整数,第i个表示节点i的初始权值接下来N-1行每行两个整数u,v,表示u和v之间存在一条树边接下来Q行每行一个操作,格式如题目描述输出描述...原创 2019-04-02 10:16:41 · 268 阅读 · 0 评论 -
数列分块入门 【LibreOJ 1-9】
数列分块入门 1给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法和单点查询模板题///#include<bits/stdc++.h>///#include<unordered_map>///#include<unordered_set>#include<iostream>#include<algorithm>...原创 2019-04-07 16:31:09 · 344 阅读 · 0 评论 -
树链剖分【学习 + 洛谷P3384】
树链剖分LCA: Nearest Common Ancestors 【POJ1330】求树上两个结点的最近公共祖先(LCA)树上差分: Network【POJ 3417】DFS序:Apple Tree【POJ 3321】要求要求你进行上述五种操作,并且将询问输出,用上面两种算法来解决就比较吃力这就要靠树链剖分来解决了参考博客:https://www.cnblo...原创 2019-03-31 18:47:10 · 205 阅读 · 0 评论