
数据结构
文章平均质量分 78
沉溺
这个作者很懒,什么都没留下…
展开
-
UVA 11020 Efficient Solutions(multiset,数据结构)
题目大意:给你n个人,有两个属性x、y,如果不存在另外一个人x2,y2满足 x2思路:将每个人的属性x、y,画在平面坐标系里展现出来,因为没有优势的人的不会之后再有优势,考虑所有有优势的人的集合,画出来,那么肯定是一条下凹曲线。当前加进来一个点,要么它加进这个集合,然后更新这个集合,要么就直接无视。如果当前这个点的 y 小于(lower_bound(P)-1)的y,那么它就可以加进来,然后往后原创 2013-08-22 20:05:28 · 830 阅读 · 0 评论 -
2013 多校第三场 hdu 4630 No Pain No Game(线段树)
hdu 4630题目:http://acm.hdu.edu.cn/showproblem.php?pid=4630题目大意:1~n,总共个数,任意顺序排列,然后给你m个询问,每个询问有a、b,问你区间a~b的数里面任意两个数最大gcd是多少。思路:由于它问的是gcd,那么我们可以先枚举约数,即1~n,对于每个约数去画区间,我们要求的是对于每个区间长度要尽可能的小,比如约数是1的区间,那原创 2013-07-31 19:02:59 · 793 阅读 · 0 评论 -
2013 多校第二场 hdu 4614 Vases and Flowers(线段树)
hdu 4614题目:http://acm.hdu.edu.cn/showproblem.php?pid=4614题目大意:n个花瓶,m个操作,k=1 时是从 a 开始插花,如果已经有花,那么跳过,能插多少插多少。k=2,把区间[ a , b ] 内的有的花都清理掉。思路:裸线段树。就是找区间的时候比较麻烦,其实写两个二分先判断出左右边界就好了。。 时间是 2s ,再乘个 logn 应原创 2013-07-26 11:04:24 · 1035 阅读 · 0 评论 -
ZOJ 3722 Calculate the Function(线段树+矩阵)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5235题目大意:给你n个数,然后有 m 个询问。The query has two parameters Li and Ri.The query will define a function Fi(x) on the domain [Li, Ri] ∈ Z.原创 2014-04-11 17:01:57 · 746 阅读 · 0 评论 -
hdu 1828 Picture(矩形周长并)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1828题目大意:就是给你n个矩形,每个矩形由左上和右上两个点确定,问你他们的周长并是多少?思路:线段树+扫描线。同样需要左闭右开处理,稍微和面积并有点不同,底线的长度求法和面积并一样,关键是还要-上次的底线长度,求这个值abs,然后这就是update当前这条line之后新增的横的长度。然后就是求原创 2013-11-01 18:16:44 · 1164 阅读 · 0 评论 -
hdu 1255 覆盖的面积(矩形面积二次交)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1255题目大意:就是给你矩形,然后让你求出覆盖面积两次及以上的面积和。思路:也是线段树扫描线的基础题。和之前的并也稍微有所不同,关键还是在于push_up那里,即怎么传上去的问题。这里涉及到覆盖两次。那么如果单纯只考虑当前节点的覆盖次数是不行的,因为这里的线段树是不往下传的,首先,如果自己已经覆原创 2013-11-01 18:17:20 · 793 阅读 · 0 评论 -
hdu 1542 Atlantis(矩形面积并)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1542题目大意:给你n个矩形,每个矩形由左下角和右上角两个点来确定,让你求出这n个矩形的面积并。思路:线段树扫描线的基础题,唯一要注意的是这里我们往线段树里加线段时,要注意是左闭右开的,就是这里r的 -1,+1。代码如下:#include#include#includeusing原创 2013-11-01 18:16:06 · 730 阅读 · 0 评论 -
UVALive 2930 Minimizing Maximizer(最小区间覆盖数 DP + 线段树优化)
题目大意:简单来说就是,给你一个1~n的区间,现在m个线段l~r来填,问你最小的把1~n覆盖的最小的线段数,m个线段要按顺序来。(反正我是没怎么理解题意,看了别人才理解题意的。。 = = )思路:dp的想法是很明显的,设d[ i ] 表示1~i 的最小的覆盖数,d[ i ] = min(min(d[ j ] +1),d[ i ]),a因为LA上交不上去,然后就去POJ,可是一直RE,还以为原创 2013-09-27 11:30:06 · 922 阅读 · 0 评论 -
2013 多校第九场 hdu 4699 Editor(vector OR splay tree)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4699题目大意:一个文件编译器,有一个指针,五种操作:(1)在指针前面插入一个数(2)把指针前的数删除(3)指针往左移一位(4)指针往右移一位(5)询问前k个数的最大前缀和(其中 k 思路:以指针为分界线,分别建两个栈,前面为 a,后面为b,由于kI x a.push(x)D a.pop()原创 2013-08-24 15:54:16 · 1080 阅读 · 0 评论 -
UVA 11922 Permutation Transformer(伸展树 Splay Tree)
题目大意:给你一个序列,1~n,m个操作,每个操作 a、b,就是把从第a个到第b个数字拿出来,翻转一下,放到后面,问你最终序列式多少?思路:把a~b拿出来,再放回去,可以用伸展树的分裂,合并来做,翻转的话,就在每个节点上放一个延时标记 flip ,就像线段树一样,访问的时候push_down() 就行。这里要注意,每次push_down() 要放在比较前面,因为比较是跟左儿子有关的,翻转会原创 2013-08-23 23:01:54 · 1339 阅读 · 0 评论 -
UVALive 5031 Graph and Queries(名次树 rank tree)
题目大意:有一个无向图,n个点,m条边,每个点有一个权值,有四种操作:(1)D X 表示把删除第 X 条边(2)Q X K 表示询问与节点 X 连通的所有点中,包括 X 点,第 K 大的点的权值。(3)C X V 表示将第 X 个点的权值改为 V 。(4)E 表示结束操作。让你输出所有询问操作的值的平均值。思路:正着不好处理,我们倒着来,先把所有操作后的最终图求出来,然后用名次树,对于每一个连原创 2013-08-23 14:56:05 · 1200 阅读 · 0 评论 -
Vector 中内存分配的问题( resize、reserve )
vector 内存分配、resize、reserve原创 2017-12-18 17:06:14 · 4333 阅读 · 1 评论