数据结构
_pkm_
love coding
展开
-
树链剖分 spoj 375 Query on a tree(剖分入门)
题目链接树链剖分学习#include<bits/stdc++.h>using namespace std;#define LL long long#define cl(a,b) memset(a,b,sizeof(a))#define pb push_back#define gcd __gcdconst int maxn = 100010;const LL inf =1LL<<50;co原创 2016-05-05 14:42:20 · 352 阅读 · 0 评论 -
树状数组小记
原理就不说了 1)单点更新,区间查询,这个是基本的用法 2)反过来,区间更新,单点查询,也可以使用树状数组实现。 具体的过程是更新区间[l,r]的时候,更新add(l,x), add(r+1,-x) 这样sum(x)就是x点的值了。原创 2016-10-26 23:28:54 · 224 阅读 · 0 评论 -
ZOJ 1610 Count the Colors (线段树+结点为长度为一的区间+树的遍历)
F - Count the ColorsTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %lluSubmit Status Practice ZOJ 1610DescriptionPainting some colored segments on a line, some previously pain原创 2015-04-06 18:10:28 · 682 阅读 · 0 评论 -
poj 2763 Housewife Wind(树链剖分,边权)
题目链接 题意:给出一颗树,初始在s点,有2个操作0操作,表示求s到u路径和 1操作表示把第i条边权重变为w。树链剖分,然后用线段树维护就可以了//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#include<queue>#include<sta原创 2016-10-27 22:29:40 · 280 阅读 · 0 评论 -
HDU 3974 Assign the task (线段树+dfs序)
J - Assign the taskTime Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 3974DescriptionThere is a company that has N employees(numbered from 1 to N),e原创 2015-04-09 21:41:32 · 621 阅读 · 0 评论 -
BZOJ 2243: [SDOI2011]染色 (树链剖分,点权,线段树)
题目链接树链剖分,然后直接跑一遍,线段树//#pragma comment(linker, "/STACK:102400000,102400000")#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false)原创 2016-10-28 16:56:39 · 266 阅读 · 0 评论 -
BZOJ 1036: [ZJOI2008]树的统计Count(树链剖分 点权)
题目链接 题意:给出一个树,告诉每个点的权值,然后有修改操作,还有询问(u,v)路径上的最大值,(u,v)路径的和树链剖分啦,一般分为点权和边权,剖分部分不变,只是用其他数据结构处理的时候注意一下,点权可以可以转换为该点与父边的权值,就变为了边权,这样就相于给根节点来了一个虚拟的父亲(代码中不用体现),对于剖分的学习,动手自己剖分一遍,就明白了,第二个dfs就是把重边连城链,其实就是给边编号,使得原创 2016-10-26 16:17:10 · 295 阅读 · 0 评论 -
BZOJ 4034: [HAOI2015]T2(树链剖分,点权,线段树)
题目链接 题意: 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。直接跑树链剖分,我们知道剖分的第二个dfs,我的代码是getpos 中,某一个节点的子树节点编号是连续的,所原创 2016-10-29 10:49:29 · 351 阅读 · 0 评论 -
poj 3237 Tree(树链剖分,点权,线段树)
题目链接 题意:一棵树3个操作 1.chang i,v 把第i条边权值修改为v 2.negative a,b 把a到b权值取反 3.query a,b 查询a到b的边上的最大值 树链剖分就不说了,线段树,由于取反操作,所以我们同时记录下最小值,这样取反操作,就是最大的变最小了,最小的变最大了,附加一个懒惰标记。偶次反转是没变的。//#pragma comment(linker, "/STA原创 2016-10-29 12:21:28 · 308 阅读 · 0 评论 -
线段树小记
关于线段树的叶子节点,连续与离散的2种情况A)连续的,比如[3,7]:就表示数轴上3到7这么一段。B)离散的,比如[3,7]:就是表示集合{3,4,5,6,7}二者在线段树上的区别是 1. A在线段树中的叶子节点是[l,l],区间分开是[l,m],[m+1,r] 2. B在线段树中的叶子节点是[l,l+1],区间分开是[l,m],[m,r]等原创 2016-10-26 23:22:05 · 202 阅读 · 0 评论 -
杭电1272 并查集
小希的迷宫Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 27063 Accepted Submission(s): 8353Problem Description上次Gardon的迷宫城堡小希玩了很久原创 2014-09-27 20:09:24 · 485 阅读 · 0 评论 -
04-2. File Transfer (25)并查集
04-2. File Transfer (25)时间限制150 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, YueWe have a network of computers and a list of原创 2014-12-29 20:35:17 · 1059 阅读 · 0 评论 -
HDU 3966 Aragorn's Story(树链剖分 点权,树状数组)
题目链接 题意:给出一棵树,每次把路径(u,v)上的点权都加上或者减去一个值,然后问某一点的值。 树链剖分,后面可以使用线段树,也可以使用树状数组。使用树状数组的话,因为是点权,要移到边权上,所以pos初始为1。树状数组,使用了区间的更新,单点查询。 具体的过程是初始化 add(i,x),add(i+1,-x) 这样sum(x)就是x点的值了。而不会是x的前缀和了//#include<bits原创 2016-10-26 18:35:09 · 321 阅读 · 0 评论 -
HIHO #1080 : 更为复杂的买卖房屋姿势(线段树双标记)
题目链接两种操作, 0)区间加减,记add标记 1)区间设置为某一个值,记set标记使用2个懒惰标记,然后注意的是,2个操作的优先级,也就是下放节点的标记的时候,注意先检查set标记,因为set是会覆盖掉区间的加减操作的。#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#defi原创 2016-08-10 21:18:15 · 448 阅读 · 0 评论 -
CDOJ1259 昊昊爱运动 II (线段树+bitset)
题目链接 使用bitset保存每一段区间的不同的数的数量,线段树节点,存bitset,bitset可以使用二进制位运算#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<iostream>#include<bitset>using namespace原创 2016-04-15 11:28:09 · 532 阅读 · 0 评论 -
HIHO #1066 : 无间道之并查集
题目链接并查集入门#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<cstdlib>#include<vector>using原创 2016-08-09 18:15:40 · 298 阅读 · 0 评论 -
Codeforces Round #286 (Div. 1) D. Mr. Kitayuta's Colorful Graph (并查集 STL)
题意链接 题意:给出一个图,告诉每个点之间的边的颜色(有重边),问你任意两点之间有多少边连接。 解法:并查集处理,f[x][c]:表示与x 链接且颜色是c的顶点y AAA:姿势不对 会超时,正确的姿势是unordered_map,其暴力遍历的时候要循环小的#include<bits/stdc++.h>using namespace std;#define LL long long#de原创 2015-11-18 18:40:55 · 417 阅读 · 0 评论 -
HDU1811 Rank of Tetris(并查集+拓扑排序)
思路:利用并查集缩点,把相等的点看成一个,然后他们的父亲的号,就相当于他们的新号#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include<stack>#include<原创 2015-09-02 16:18:32 · 443 阅读 · 0 评论 -
1021. Deepest Root (25) 并查集&&DFS
1021. Deepest Root (25)时间限制1500 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA graph which is connected and acyclic can be considered a tree. The height of the tree depend原创 2015-03-13 21:05:42 · 1274 阅读 · 0 评论 -
POJ 1308 Is It A Tree? 并查集
Is It A Tree?Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uSubmitStatusPracticePOJ 1308DescriptionA tree is a well-known data structure that is either emp原创 2015-03-12 15:19:29 · 916 阅读 · 0 评论 -
CF 343D D. Water Tree(树链剖分,简单题)
题目链接 题意:给出一个树;三种操作 1 v 表示把v及其子树全部变为1 2 v 表示把v及其祖先全部变为0 3 v 查询v的值 数组尽管开吧,,, 然后,祖先就是1到该点,不要想太多- - 子树的编号在剖分的编号中是连续的,[p[x],p[x]+size[x]-1]#pragma comment(linker, "/STACK:102400000,102400000")//#inc原创 2016-10-29 14:55:55 · 646 阅读 · 0 评论