数据结构
文章平均质量分 75
bin_gege
这个作者很懒,什么都没留下…
展开
-
hdu_4046_Panda(树状数组)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4046题意:一大堆篇幅介绍,跳过直奔主题,让你寻找给定区间的“wbw”的个数。题解:直接上树状数组,改变字符后对应改变3个值就行,注意的是询问 [l,r],应该对应输出的是[l+1,r]。#includeconst int maxn=50001;int tree[maxn],n;char原创 2016-05-01 18:07:53 · 326 阅读 · 0 评论 -
hdu_4718_The LCIS on the Tree(树链剖分+线段树合并)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4718题意:给你一棵树,每个节点有一个值,然后任给树上的两点,问这两点的最长连续递增区间是多少题解:先树链剖分,然后结合线段树的区间合并来搞,注意的是要记录递增和递减两个状态,因为线段树的区间都是从根到子节点,如果询问从子节点到子节点,那么就是一增一减#include#include#d原创 2016-06-30 17:31:50 · 565 阅读 · 0 评论 -
hdu_2688_Rotate(树状数组)
题目连接:hdu_2688_Rotate题意:给你n数,(n题解:求严格递增的顺序对我们可以反向用树状数组求逆序对,300W的数据还是有点够呛,不过这里求出来也就nlogn,然后对于旋转操作,因为区间大小不超过1000,我们只需统计该区间的第一个数和后面的数的关系,如果第一个数比后面的数大,就ans++,如果小于就ans--,等于就不管,因为是严格递增,然后就是这里我加入读入优化,感觉还是原创 2016-07-11 14:02:52 · 324 阅读 · 0 评论 -
hdu_2838_Cow Sorting(树状数组求逆序对)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2838题意:给你一串数,让你排序,只能交换相邻的数,每次交换花费交换的两个树的和,问最小交换的价值题解:实质就是求逆序对#include#define F(i,a,b) for(int i=a;i<=b;i++)typedef long long LL;const int N=1e5+原创 2016-06-29 11:23:39 · 388 阅读 · 0 评论 -
hdu_5293_Tree chain problem(DFS序+树形DP+LCA)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5293被这题打蹦了,看着题解写的,很是爆炸,确实想不到,我用的DFS序+LCA+树形DP,当然也可以写树剖,不过这里DFS序更简单,因为都是对点到根的操作#include#include#include#pragma comment(linker, "/STACK:102400000,10原创 2016-06-28 21:22:04 · 401 阅读 · 0 评论 -
hdu_5221_Occupation(树剖)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5221题意:给你一棵树,每个节点有一定的值,有三种操作: 1 x y 表示占领树上x-y的所有节点,2 x 表示去掉这点,3 x表示占领以这个节点为根的所有节点题解:1 2 都是树剖操作,3则要记录树剖的时间戳,一个根节点下的点的新编号都是连续的,所以只要记录该根节点的最大时间戳就知道这个区间了原创 2016-06-28 18:32:39 · 369 阅读 · 0 评论 -
hdu_5274_Dylans loves tree(树剖)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5274题意:给一棵树和叶子的值,然后有单点修改操作和询问区间操作,询问的是每一个值出现的奇偶次数,如果全是偶数次,则输出-1,否则输出那个奇数次的数,题目保证只有一个数出现奇数次。题解:这里的题很巧妙,要想到异或的特殊性质#include#define F(i,a,b) for(i原创 2016-06-27 22:40:43 · 417 阅读 · 0 评论 -
hdu_3804_Query on a tree(树链剖分)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3804题意:给你一棵树,然后给出树上边的价值,然后给出x,y,问从1到x的边上不超过y的最大值为多少题解:这题如果直接写裸线段树来在线更新会T飞,正解是把边的值存下来,把询问也存下来,然后都按照价值从小到大排序,然后从最小的开始找,找之前把边的值插进线段树,这样就成了查询区间最大值了,很巧妙的方原创 2016-06-27 21:52:32 · 601 阅读 · 2 评论 -
hdu_5044_Tree(树链剖分)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5044题意:给一棵树,在点和边上操作题解:树链剖分,剖完后用树状数组维护即可,因为只有加减操作,连树状的部分都不用写,最后要注意当n等于1的情况#include#pragma comment(linker, "/STACK:1024000000,1024000000")#define F原创 2016-06-27 14:37:47 · 264 阅读 · 0 评论 -
hdu_3966_Aragorn's Story(树链剖分裸题)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3966题意:给你一棵树,然后给定点之间的路径权值修改,最后单点查询题解:树链剖分裸题,这里我用树状数组维护#include#pragma comment(linker, "/STACK:1024000000,1024000000")#define F(i,a,b) for(int原创 2016-06-27 13:04:13 · 475 阅读 · 0 评论 -
hdu_5029_relief grain(树链剖分)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5029题意:给你一个树,然后给你两点,将这两点之间的点涂上颜色,问涂色最多的那个颜色是什么,如果数量相同,就输出编号小的颜色题解:树链剖分,这个题很巧妙,线段树维护的是一个颜色线段树,然后如果要涂[l,r]的颜色a,就在l处标记a +1,在r+1处标记a -1。然后从左往右依次更新线段树,并q原创 2016-06-26 21:36:32 · 428 阅读 · 0 评论 -
hdu_2665_Kth number(主席树)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2665题意:给你一个区间,让你找这个区间第K大的数题解:主席树模版题,也可以用划分树#include#include#include#define FFC(i,a,b) for(int i=a;i<=b;++i)using namespace std;const int maxn原创 2016-05-21 11:53:40 · 631 阅读 · 0 评论 -
hdu_2871_Memory Control(巨恶心线段树)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2871题意:给你一段内存,让你操作1:Reset:重置所有内存 2:New x:申请一块X大小的内存,返回内存最左边的开头,3:free x:释放包含x单元的内存块 4:Get x:取第X块的内存首地址题解:这题我写了一晚上,很恶心,显然用线段树维护,不过用一个Vector 来应对 free和g原创 2016-05-28 23:51:07 · 357 阅读 · 0 评论 -
hdu_2227_Find the nondecreasing subsequences_树状数组,离散化
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2227题意:给你一个集合,让你求递增子序列有多少个,和树状数组求逆序对差不多,不过数据比较大,要离散化一下原创 2016-05-04 15:52:40 · 428 阅读 · 0 评论 -
hdu_4897_Little Devil I(树链剖分)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4897题意:有三种操作,1是在树上的两个节点之间的路径改变当前的颜色,2是改变树上有且只有一个端点在u,v之间的边的颜色,3是询问u,v之间黑色边的条数题解:对于1,就是一般的树链剖分操作,对于2,我们知道树剖把树分成了重链和轻链,我们要充分利用这个结构才能降低时间复杂度,这里我们建立两个线段树原创 2016-07-01 16:53:04 · 544 阅读 · 0 评论