B. Fire-Fighting Hero (dijstra优先队列+bfs) 题意:刚开始看错题了,以为是k次dijkstra,但是wa了,后来队友指正后发现挺水的。求S到其它点的最短路的最大值ans1,然后求其它点到指定k个点之一的最短路的最大值ans2。比较ans1和ans2即可。 思路:用d ...
分类:
其他好文 时间:
2019-09-09 12:56:22
阅读次数:
120
直接根据最短distance greedy做。 用了优先队列,C++ less<type> 是大的先,所以我们可以重载<符号,把逻辑反过来。 第二种写法不用结构体,节省了空间复杂度,但是每次cmp的时候都要计算dist,但是时间会翻倍。 这里采用了 lambda funtion,注意 priorit ...
分类:
其他好文 时间:
2019-09-05 13:48:59
阅读次数:
102
一、简介 前文介绍了《最大堆》的实现,本章节在最大堆的基础上实现一个简单的优先队列。优先队列的实现本身没什么难度,所以本文我们从优先队列的场景出发介绍topK问题。 后面会持续更新数据结构相关的博文。 数据结构专栏:https://www.cnblogs.com/hello-shf/category ...
分类:
其他好文 时间:
2019-09-05 13:46:53
阅读次数:
90
基础知识: 线段树是一颗二叉树搜索树,也是二叉平衡树。 根区间:[L,R] 左孩子区间:[L, (L+R)/2] 右孩子区间:[(L+R)/2+1, R] 叶子节点:L=R 树高logN 树上的操作都和树高有关系,例如:优先队列,堆等 时间复杂度O(longn) 用法: 区间更新 区间查询 例如区间 ...
分类:
其他好文 时间:
2019-09-04 13:20:03
阅读次数:
85
[TOC] 题目地址 "hdu2037" 题干 代码和解释 本题使用贪心。有三种贪心策略:开始时间最早,结束时间最早,用时最短。第二种是正确的策略,因为结束得越早,后面就可以有越多节目被看。 我使用了优先队列进行排序,以结束时间数值小的为高优先级。 c++代码如下: 参考 贪心法思想: 走一步看一步 ...
分类:
其他好文 时间:
2019-09-03 22:31:25
阅读次数:
114
priority_queue<int>que//默认最大的先出来 priority_queue<int,vector<int>,greater<int> >que;///最小的先出来 struct node{ int x,y; bool operator < (const node &b)const... ...
分类:
其他好文 时间:
2019-09-02 23:29:34
阅读次数:
102
2.4.25 计算数论。编写程序CubeSum.java,在不使用额外空间的条件下,按大小顺序打印所有a^3+b^3的结果,其中a和b为0至N之间的整数。也就是说,不要全部计算N^2个和然后排序,而是创建一个最小优先队列,初始状态为(0^3,0,0),(1^3,1,0),(2^3,2,0),..., ...
分类:
其他好文 时间:
2019-08-31 19:35:59
阅读次数:
69
一般形式的用邻接矩阵来实现dijkstra效率比较低,我这里直接记录的是用邻接表的方法以及用优先队列加以应用。 首先解释什么是dijkstra算法 dijkstra算法 dijkstra算法适用于求单源最短路,即可以求出起点到其余各点之间的最短路。它的算法实现是一个不断更新的过程。 举一个最简单的例 ...
分类:
编程语言 时间:
2019-08-31 14:44:57
阅读次数:
128
1039 Course List for Student (25 分) 1039 Course List for Student (25 分) 1039 Course List for Student (25 分) Zhejiang University has 40000 students and ...
分类:
其他好文 时间:
2019-08-30 19:06:52
阅读次数:
90
传送门 看题目就想到 $dp$,想不出来就去想贪心... 考虑按右端点排序,一个个修,如果在修某个建筑 $i$ 时发现来不及了,说明前 $i$ 个建筑最多只能修 $i-1$ 个 那么我们把前 $i$ 个中耗时最长的那个放弃,这样省下的时间最多 然后用优先队列维护一下就行 ...
分类:
Web程序 时间:
2019-08-30 10:04:44
阅读次数:
130