优先队列
文章平均质量分 77
小胡同的诗
千里之行,始于足下
展开
-
HDU1026(bfs+优先队列+路径记录)
AC代码:#include#include#include#include#include#includeusing namespace std;struct node{ int x,y,time; friend bool operator < (node a,node b) { return a.time>b.time; }};原创 2018-02-05 18:40:07 · 215 阅读 · 0 评论 -
二叉堆与堆排序总结
目录前言性质抽象实现前言堆的数据结构是一个完全二叉树,其能实现优先队列的功能,主要的作用是能够动态地维护一个有关优先级的序列,使其在插入和删除都能在O(logn)O(logn)O(logn)时间内完成,查询能在O(1)O(1)O(1)完成。性质对于小根堆而言,这个二叉树形的结构只要满足所有的父节点都小于子节点就是小根堆,显然,这是个递归的定义。对于大根堆则是父节点大于子节点。抽象...原创 2019-09-08 16:02:14 · 152 阅读 · 0 评论 -
FZU2219 StarCraft(思维 哈夫曼树构造变形)
题目大意:给T组数据,之后一行n,m,k分别表示n个建筑,初始m个兵,一个兵生产一个兵要k时间。接下来n个数分别表示建造对应建筑要消耗的时间,求最少要多少时间?一个兵生产后还可以工作,工作后要将其移除。思路:贪心,类似于哈夫曼建树的过程,具体思路见模拟哈夫曼建树(好题)Code:错误思路#include <iostream>#include <queue>#in...原创 2019-04-18 23:54:31 · 155 阅读 · 0 评论 -
PAT -- 甲级1014 (1014 Waiting in Line)
1014 Waiting in Line (30 分)Suppose a bank has NNN windows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. The rules for the customers t...原创 2019-04-26 22:48:05 · 448 阅读 · 0 评论 -
HDU4546比赛难度(优先堆+思维 好题)
题目链接:hdu4546题目大意:给n长度的数字序列,从中取出k个元素(0<k<=n)求和,找出k个元素之和为第m小的和值。解题思路:第一次做这样组合的题,第一直觉会想用爆搜穷举出所有组合,然后扔进multiset中维护这些值,搜索的复杂度是指数级,内存也超限。发现找到第m个小的可以直接用优先队列来模拟,因为m<10000,所以可以模拟到第m大就结束(其实用multiset也...原创 2019-02-08 23:18:34 · 486 阅读 · 0 评论 -
HDU1873看病要排队(STL优先队列)
解题思路:根据题意维护三个优先队列。优先队列的重载符operator的知识有缺漏!!!AC代码如下:#include<stdio.h>#include<string.h>#include<string>#include<iostream>#include<algorithm>#include<queue>using...原创 2018-03-27 15:55:10 · 167 阅读 · 0 评论 -
HDU1728逃离迷宫(BFS+优先队列)
解题思路:对优先队列有了更深的理解。以前写优先队列是针对那种有权的最短路问题,搜出来的必定是道路的花费最优解,我们可以用book标记走过的地方,下次不必要再走;而本题由于用了优先队列,走过的点到底要不要再考虑呢?假设上次到达本点拐弯了1次,而现在却拐弯了2次,当然不要本次的这个方法走,相反如果本次用1次,而上次用2次,就要用本次的方法。如果两次的拐弯数一致呢?其实两种都要搜,为什么?因为你进来的方...原创 2018-03-01 11:34:54 · 300 阅读 · 0 评论 -
HDU2425(优先队列+BFS)
题解:搜图的题,有权最短路用优先队列+bfsAC代码如下:#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;struct node{ int x,y,ste...原创 2018-02-18 00:03:38 · 253 阅读 · 0 评论 -
HDU1180诡异的楼梯(bfs+优先队列+特殊判断)
题解:本题难点就是遇到楼梯的判断,我用一个优先队列保存到当前的步数,如果下一步是楼梯,如果截至目前步数为奇数,则楼梯方向要变,并且如果楼梯的方向变成与当前要走的方向不一致,则要等一分钟;否则直接到楼梯的另一头。可能读我代码的会觉得我的代码会存在这样的问题,就是到了楼梯的另一端可能还会返回,但我有用book数组标记了,即这种情况会被筛掉。以下代码在HDOJ测0msAC代码如下:#include原创 2018-02-06 19:12:22 · 361 阅读 · 0 评论 -
11.5 左偏树总结(可并斜堆)
目录前言定义性质实现左偏树结构合并堆操作完整代码前言可并堆有多种方法实现,例如斐波那契堆,配对堆等,以下记录左偏树,也称为斜堆。是一种基于非平衡二叉树的数据结构,其在合并堆的时候可以达到O(log(m+1))O(log(m+1))O(log(m+1))的速度。当然,左偏树还分好几种,如左偏高树左偏重树等。关于左偏,实际上就是让左子树的特征数量不小于右子树,例如左偏高树就是左子树的高度不小于右...原创 2019-09-17 10:40:09 · 639 阅读 · 0 评论