
数据结构
心若为城
这个作者很懒,什么都没留下…
展开
-
线段树(一)
蒟蒻の线段树原创 2015-12-28 15:54:47 · 339 阅读 · 0 评论 -
数据结构[刷水]
1.POJ The merchant 给定一棵树,每个点有一个点权 每次询问(u,v),求从u到v的路径上,a点权值-b点权值最大 要求a点比b点更靠近(或者等于)v 1 ≤ N, wi, Q ≤ 50000 时限3秒 题解:树链剖分,线段树维护最大最小值,以及当前区间答案。 2.HDU Monkey King 有n个点,每个点有一个权值,有m个操作 每次操作,询问u和v所在联通原创 2016-05-25 14:04:07 · 716 阅读 · 0 评论 -
线段树套Treap
树套树原创 2016-04-22 11:15:00 · 406 阅读 · 0 评论 -
CQOI2011-动态逆序对
QAQ原创 2016-06-05 07:43:54 · 429 阅读 · 0 评论 -
BZOJ2733 永无乡
题意: 给定n个点和它们的排名,支持两种操作: 1.连接两个点 2.询问某个点所在的联通块内排名第k大的是哪个点。 <脑洞第三个操作:删除两个点的连边> 首先被剧透是线段树的合并。 我仔细想了想这东西应该是很难写的。 hzt:就两行你快去写! QAQ 然后我仔细想了想大概这样: 对于每个联通块开一个线段树,某个线段树的某段区间[l,r]意味着排名在[l,r]之间的节点信息。 也原创 2016-05-23 20:11:43 · 400 阅读 · 0 评论 -
整体二分<QAQ> && CDQ分治
辣鸡zxn对于两个神算法的一些简单理解原创 2016-06-14 09:33:37 · 1142 阅读 · 0 评论 -
数点问题
1.一维数点: 每次询问val<=qval <= q的有多少个。 1)按照valval排序然后二分。 2)树状数组 2.二维数点: 每次询问ai<=xa_i<= x && bi<=yb_i <= y的有多少个。 1)树状数组+线段树等 2)按照aia_i排序后二分,找到位置后再次进行二分。 3)扫描线+Bit: 对aia_i进行排序,把所有的点加入到(维护y的)树状数组中。 对询原创 2016-09-01 11:02:27 · 3249 阅读 · 1 评论 -
COT2
博客已经好久不更新了。 一来是身体差,二来也是没有人看。 再者说自己也比较懒 然后兴致勃勃跑去直接写了个二维bit…… 后来觉得不过瘾就去写了个树上莫队QAQ 然后…… 因为自己纸张调了一下午。 TAT 其实还是很好懂的,随便找找就能找到资料。#include <bits/stdc++.h>#define Rep(i,n) for(int i = 1;i <= n;++ i)#d原创 2016-09-29 14:38:52 · 799 阅读 · 0 评论 -
点分治
点分治是统计树的路径问题/有序点对计数问题……这些东西的一种算法。 介绍一下它的思路。 有一个题: 求树上距离为kk的点对个数,其中(u,v)(u,v)和(v,u)(v,u)视作同一个点对。 做法: 转成长度为kk的路径条数。 暴力枚举每一个点,统计过这个点的合法路径个数,然后把这个点标记好,之后不再将存在这个点的任何合法路径计入答案。 这样做显然是对的,因为统计路径的时候只会把每条路原创 2017-01-20 20:08:26 · 534 阅读 · 0 评论 -
树状数组正确性的证明、、、
树状数组: 先明确一下: 树状数组维护的数据必须带有可减性,可并性、、、 可减性:如某某的和,可并性:如把[1,l]和[l,r]的区间信息并起来能得到1~r。 Modify:ADD[x];for(;x <= n;x += x & -x)t[x] += d;Query:[l,r]int s = 0;for(l --;l;l -= l & -l)s -= t[l];for(;r;r -=原创 2016-03-11 13:49:53 · 846 阅读 · 0 评论 -
来自HQ的满满的恶意
233原创 2016-03-21 20:33:34 · 499 阅读 · 0 评论 -
树链剖分(三)(除了道馆之战——暂时可以告一段落了)
树链剖分原创 2016-02-23 18:14:51 · 534 阅读 · 0 评论 -
树状数组(一)
树状数组原创 2015-12-01 08:22:05 · 533 阅读 · 0 评论 -
趣解Splay之单双旋
Splay&&Spaly原创 2016-01-05 19:03:32 · 258 阅读 · 0 评论 -
树链剖分(二)
数据结构之——树链剖分原创 2015-12-28 14:57:34 · 558 阅读 · 0 评论 -
树链剖分(一)(#请配合树链剖分(二)以及线段树一起食用-_-#)
树链剖分原创 2016-01-29 23:51:33 · 1225 阅读 · 1 评论 -
Spaly选讲……哦不,Splay
Splay原创 2016-01-11 18:19:25 · 481 阅读 · 1 评论 -
学习莫队算法、、、
本以为莫队算法是很简单的东西、、、但是学完了吓得我筷子都掉地上了、、、先来看看我的提交记录、、、再看BZOJ:其实错了这么多次确实不应该交了、、、但是、、、没想到的是、、、我的模板都是错的、、、先来讲讲莫队算法、、、**离线**算法,不带修改,多次询问,[l,r]可以O(1)求出[l,r + 1],[l,r - 1],[l - 1,r],[l + 1,r]。那么我们可以用莫队原创 2016-03-06 19:44:31 · 191 阅读 · 0 评论 -
学习莫队算法、、、
本以为莫队算法是很简单的东西、、、 但是学完了吓得我筷子都掉地上了、、、 先来看看我的提交记录、、、再看BZOJ:其实错了这么多次确实不应该交了、、、 但是、、、没想到的是、、、 我的模板都是错的、、、 先来讲讲莫队算法、、、 离线算法,不带修改,多次询问,[l,r]可以O(1)求出[l,r + 1],[l,r - 1],[l - 1,r],[l + 1,r]。 那么我们可以用莫队算法原创 2016-03-06 19:52:58 · 636 阅读 · 0 评论 -
POI2006-BZOJ1513:Tet-Tetris 3D
题意:给定一个空矩阵,对其进行两种操作: 1.矩阵询问max 2.矩阵加 你只需要输出最后的矩阵最大值。 二维线段树……应该是显然的,但是做的时候发现自己Naive了…… 首先我们在修改一个子矩阵时,包含子矩阵的那些矩阵的值在外层没办法上传。 其次我们发现子矩阵的子矩阵也没有信息…… 忽然想到标记永久化这个东西,想到一种方法大概这样: 比较显然的一点就是,内外层线段树是等效的,所以我原创 2016-04-01 08:08:23 · 729 阅读 · 0 评论 -
Link-Cut-Tree模板
这次不是在很多人的帮助下……而是自己调的代码、、、 略微看了看自己LCT掉进去的几个坑、、、 略微介绍一下: LCT的类似于树链剖分,只不过树链剖分是静态的,而LCT是动态的。 LCT用Splay来维护每一条重链,而且在初始情况下,LCT是没有轻重链之分的。 请注意,这里Splay维护的是按照深度递增的顺序来进行排序的。 找到一张图是这样的: 把这个树变成LCT之后…… 核心原创 2016-03-09 20:14:36 · 3860 阅读 · 0 评论