
数据结构——队列&优先队列
文章平均质量分 67
HARD_UNDERSTAND
Just try
展开
-
hdu 5695 拓扑排序裸题
Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 696 Accepted Submission(s): 282 Problem Description 众所周知,度度熊喜欢各类体育活动。 今原创 2016-05-24 16:31:18 · 399 阅读 · 0 评论 -
Codeforces 754 D Fedor and coupons【优先队列】
题目:http://codeforces.com/contest/754/problem/D题意:从n条线段中取出恰好k条使得交集长度尽可能长,输出最优值和方案。分析:感觉这种题做过好多次了,贪心+优先队列就可做。 根据左端点排序,然后依次插入右端点,直到队列中元素有k个,然后当前插入的左端点是最大的,队首的就是右端点最小的。这样维护一下即可。 set和优先队列都可以,set似乎更方便些~~代码原创 2017-03-02 11:53:29 · 258 阅读 · 0 评论 -
poj 2823 滑动窗口 单调队列/线段树
题意: 求滑动窗口中的最大值和最小值。 分析: 可以用线段树来做,建完树后,查询区间n-k+1次就行,每次查询O(1),时间复杂度O(n) 也可以用单调队列来做,比如求窗口中的最小值,那么就维护一个递增的队列,那么最小元素就是队首元素,每次右移,只要维护队列元素是递增的就可以。同样,求最大值,是维护一个递减的队列。#include<iostream> #include<cstdio> #in原创 2016-05-15 22:26:43 · 1205 阅读 · 0 评论 -
Codeforces 721D (优先队列,模拟)
题目:http://codeforces.com/contest/721/problem/D 题意: 给出一个n个数的序列,最多可以有k次操作,每次操作可以任选序列中的一个数+x或者-x,求如何使得n个数的积最小? 分析: 这题比较麻烦,有一些情况 首先分析,要想积最小,那么就把积变成负数。 如果可以变成负数,那么就尽量让所有数的绝对值平均一些,这样积的绝对值才更大。 怎原创 2016-11-03 21:05:57 · 430 阅读 · 0 评论 -
hdu 5884 Sort(单调队列,青岛网络赛)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5884 题意: 给出一个数列,每次可以选k个数合并,代价是这k个数的和,最后合并成一个数以后要求总代价不大于m,问最小的k是多少? 分析: 二分答案,然后判断k是否可以。 怎么取才能最优呢?显然是大的数越往后取越优,因为这样才能加的次数少啊! 因为每次都会减少k-1个,一共减少了n-1个原创 2016-09-21 21:09:30 · 347 阅读 · 0 评论 -
hdu 5818 Joint Stacks 优先队列(多校)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5818 题意: 有两个栈A和B,有三种操作: - push X v 向X栈中压入一个数v - pop X 打印出X栈顶元素 - merge X1 X2 把X2中的元素按照加入的顺序合并到X1栈中 分析: 这题用优先队列去模原创 2016-08-09 21:19:17 · 295 阅读 · 0 评论 -
poj 2049 Finding Nemo(bfs+优先队列)
题意: Marlin去找困在迷宫中的Nemo,墙壁不可以穿过,但是墙上的门可以穿过,问Marlin最少穿过几扇门可以找到Nemo,无法到达输出-1. 分析: 这题比较麻烦的地方是怎么判断格子的一条边是墙壁还是门还是什么都没有。为了区别是哪条边,我用一个80000的g数组去判断,给每条边一个ID值去区分。与x轴平行的边是x+y*200,与y轴平行的边是40000+200*x+y,其中x和y是每原创 2016-07-05 22:33:15 · 306 阅读 · 0 评论 -
poj 2442 优先队列/堆+dp
题意: 给出m行,每行n个数,每次从一行中选择一个数,这m个数求和。所有的方案数是n^m,问这些方案中和最小的n个? 分析: 这题有点桶排序和滑动窗口的意思,还是挺不错的一道题。因为要最小的n个和,所以可以用优先队列去维护最小的n个和,这n个和是第i行中的元素和前i行的和相加选择的最优的(这又有点动态规划的思想QAQ)。也就是说,前i行得到了n个最小和,那么这n个最小和可以从第i行里各选择n原创 2016-07-12 10:54:42 · 408 阅读 · 0 评论 -
poj 1442 优先队列
题意: 每次插入一个数字,在第u[i]次插入完后可以查询第k大的数字,然后k递增,初始化k=1。 总共数字n 分析: 很容易想到用优先队列去维护已插入的序列有序,然后难处理的就是怎么找到第K大的数字?因为k是递增的,所以每次查询完以后,前k小就不会再出现了,但是可能以后会插入比前k小中某个数还小的,这时候就要想办法把当前插入的数和第k小交换一下。所以可以再利用一个大根堆的优先队列,去保存已原创 2016-07-12 16:48:34 · 249 阅读 · 0 评论 -
51nod 1102 面积最大的矩形【单调栈、预处理】
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102题意:分析:这题及得好像在哪做过QAQ,很快就水掉了, 刚开始想的是枚举每个ai,然后向两边 找大于等于ai的最大范围Li和Ri,更新答案ans=max(ans,(R[i]-L[i]+1)*ai)。很容易想到预处理Li和Ri,因为if(a[i-1]>=a[i])原创 2017-02-25 00:06:24 · 573 阅读 · 0 评论