
数据结构
Rain722
这个作者很懒,什么都没留下…
展开
-
HDU3706Second My Problem First(单调队列)
Second My Problem FirstTime Limit: 12000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1928 Accepted Submission(s): 731Problem DescriptionGi原创 2017-07-23 17:09:17 · 469 阅读 · 0 评论 -
RMQ算法
1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j算法。当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。2.RMQ算法对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量转载 2016-10-07 21:13:08 · 329 阅读 · 0 评论 -
codeforce376C. Socks(并查集+贪心)
题意:有n只袜子,要穿m天,袜子一共有k种颜色。给出每天要穿的左脚和右脚的袜子编号,但是袜子的颜色必须要一样,所以你就需要事先对袜子进行染色,是每天穿的袜子颜色都一样。分析:比赛的时候根本就没想到并查集,只是觉得肯定有一种贪心的策略。结束后发现竟然可以用并查集套上贪心,就思考了一波。首先各个袜子的父亲都是自己,每只袜子都隶属于一个集合(即自身)且集合内袜子个数为1,当遇到一天里颜色不一样的袜子原创 2016-10-17 20:45:12 · 1600 阅读 · 0 评论 -
HDU3038How Many Answers Are Wrong(带权并查集)
Problem DescriptionTT and FF are ... friends. Uh... very very good friends -________-bFF is a bad boy, he is always wooing TT to play the following game with him. This is a very humdrum game.原创 2016-12-08 16:30:13 · 432 阅读 · 0 评论 -
Codeforces#383D. Arpa's weak amphitheater and Mehrdad's valuable Hoses(并查集+分组背包)
D. Arpa's weak amphitheater and Mehrdad's valuable Hosestime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputJus原创 2016-12-08 16:37:45 · 584 阅读 · 0 评论 -
HRBUST1849商品中心(贪心+思维+并查集)
商品中心Time Limit: 2000 MSMemory Limit: 32768 KTotal Submit: 7(5 users)Total Accepted: 3(3 users)Rating: Special Judge: NoDescription有N个城镇(编号原创 2017-07-06 10:39:23 · 443 阅读 · 0 评论 -
POJ1733 Parity game(并查集模型+带权并查集+离散化)
题意:有一个长度已知的01串,给出[l,r]这个区间中的1是奇数个还是偶数个,给出一系列语句问前几个是正确的思路:一类经典的并查集题目,经典模型就是将[l,r]这个区间化为(l-1,r],那么1的个数就可以表示为sum[r]-sum[l-1],也就确定了奇偶性,我们可以用r[]数组表示这个端点到它的根节点的1的奇偶(这个区间就是(i,root(i)](0代表偶,1代表奇原创 2017-07-19 20:56:15 · 402 阅读 · 0 评论 -
HDU 4424Conquer a New Region(并查集)
题意:给出一个树形图和边权值,边权值是容量,问把某个点作为首都,向其他n-1个点运输货物,货物容量不超过路径上的边权值;问可以输出的最大货物是多少?思路:因为限制条件是路径上的最小值,那么我们按价值排序,从大到小排,就可以避免这个问题了,然后利用并查集来完成,对于两个集合,左集合的价值总和为A,右集合的价值总和为B,现在有一条路径连接这两个集合,那么我们考虑的是将A合并到B还是原创 2017-09-30 14:13:27 · 357 阅读 · 0 评论 -
51nod1215数组的宽度(单调栈)
1215 数组的宽度题目来源: Javaman基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题N个整数组成的数组,定义子数组a[i]..a[j]的宽度为:max(a[i]..a[j]) - min(a[i]..a[j]),求所有子数组的宽度和。Input第1行:1个数N,表示数组的长度。(原创 2017-09-22 11:23:29 · 388 阅读 · 0 评论 -
CodeForces 631C.Report(单调栈)
Description 给出一个长度为n的序列a,两种操作: 1 x:把前x个数升序排 2 x:把前x个数降序排 问m次操作后的序列 Input 第一行两个整数n和m分别表示序列长度和操作数,之后n个整数ai表示该序列,最后m行每行表示一个操作(1Output 输出操作后的序列 Sample Input 3 1 1 2 3 2 2 Sample原创 2017-08-30 15:20:36 · 596 阅读 · 1 评论 -
CodeForces548D-Mike and Feet(单调栈)
题意:n个数,现将这n个数中取出每连续的k个(k 从1~n)组成一组,组内的值为这一组的最小值,现在要求所有大小为k的组的最大值。思路:单调栈。维护一个单调递增栈(从栈底到栈顶单调递增),存每个点贡献的长度和他的值。 比如1 2 3 4 5 4 3 2 1 6 第一个1,栈为空,那么把它加入栈中,贡献的长度为1,值为1。 依次直到第6原创 2017-09-04 16:49:29 · 1844 阅读 · 0 评论 -
CodeForces92D-Queue(单调队列)
题意:给一个序列,对于第i个数字a[i],在右边找到一个比它小的数,并且最靠右的位置k,输出k-i-1,如果一个都找不到,输出-1。对于序列的每个元素都要输出。思路:从最后一个数开始处理,若该数比队列中最后一个都小,则是-1,并加入队尾,否则就对队列中的数进行二分PS:想到单调队列中的数组下标具有单调性,然后可以进行二分是解题的关键。原创 2017-07-23 21:44:57 · 573 阅读 · 0 评论 -
POJ2823Sliding Window(单调队列)
题意:求数组中每k个下标连续的数字中的最大值和最小值思路:相当于HDU3530和HDU1506的综合应用#include#include#include#includeusing namespace std;const int maxn = 1e6+5;deque > q1, q2;int ans1[maxn], ans2[maxn];int main()原创 2017-07-23 20:22:37 · 324 阅读 · 0 评论 -
HDU1506Largest Rectangle in a Histogram(单调栈)
大佬讲解:http://blog.youkuaiyun.com/dgq8211/article/details/7740610http://blog.youkuaiyun.com/u013491262/article/details/22900261 这个图形从左到右由若干个 宽为1 高不确定 的小矩形构成,求出这个图形所包含的最大矩形面积。Input多组测试数据 每组测试数据的第一行为n(1原创 2017-07-23 19:56:30 · 422 阅读 · 0 评论 -
HDU3530Subsequence(单调队列)
题意:给n个数和m,k,问你数列中最长的子序列,其中最大值减去最小值大于等于m小于等于k思路:想着想着想到尺取去了,写了一半实现不了((/ □ \))。维护了两个队列,一个是以当前结束所构成的递减序列的位置,另一个是以当前结束构成的递增序列的位置,然后每次的最大值减去最小值,如果大于k,那么就更新两个中的一个,应该更新位置较小的那个,这样才能使得这个区间的长度最大,然后就这么更新就行了原创 2017-07-23 17:24:08 · 442 阅读 · 0 评论 -
优先队列详解
优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~百度百科上这样描述的: 优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素 优先队列的类定义 优先队列是0个或多个元素的集合,每个元素都有一个优先权或转载 2016-06-01 10:11:48 · 3078 阅读 · 0 评论