优化: 1 . 不对dist数组进行更新(单调性保证)(否则狂TLE)
2 . 随a权值递增而加边,同时在函数外让点入队 (否则狂WA)
3 . 对a权值排序然后进行枚举。(否则有可能常数TLE)
以下为非必须优化:
4 . 对边进行边权排序,加边时可以保证线性时间复杂度
5 . 对SPFA(Dijsktra)进行优先队列优化(堆优化)。(因...
分类:
其他好文 时间:
2014-09-02 17:56:45
阅读次数:
1010
原题http://acm.hdu.edu.cn/showproblem.php?pid=1873
看病要排队
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4774 Accepted Submission(s): 1976
...
分类:
其他好文 时间:
2014-09-02 17:56:25
阅读次数:
211
Black Box
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 7436
Accepted: 3050
Description
Our Black Box represents a primitive database. It can save an int...
分类:
其他好文 时间:
2014-09-02 17:46:05
阅读次数:
198
??
1.stack,size(),empty(),pop()函数
#include
#include
using
namespace
std;
//通过push()方法入栈
//通过size()方法求栈中元素的个数
//通过empty()方法判断栈是否为空
//通过pop()求栈中最顶端的元素
void
main...
分类:
其他好文 时间:
2014-08-30 23:08:10
阅读次数:
252
最近在看图论的经典算法,
先看的是求单源最短路的dijkstra,优化后的算法用了优先队列,看起来有点复杂。
感觉 弗洛伊德(Floyd) 要比 迪克斯特拉(dijkstra) 更好理解一点,但是Floyd是三层循环,当然会慢很多。一旦数据开大就跪了吧。
floyd可以用来求 两个 连通点间的最短路问题。同时可以得到边权的和,即最短路的长度。
另外一个比较简单的应用,还可以用来判断...
分类:
其他好文 时间:
2014-08-30 15:09:49
阅读次数:
168
http://acm.hdu.edu.cn/showproblem.php?pid=4857
思路--优先队列+反向拓扑+逆序输出
把受限制条件多的先弹出到数组里,然后再弹出不受限制的(用优先队列按序号从大到小),最后逆序输出。
#include
#include
#include
#include
using namespace std;
#define N 30001
int n,in[...
分类:
其他好文 时间:
2014-08-30 08:47:59
阅读次数:
179
BFS记录路径第一炮
题目连接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2465
思路:搜索找路径问题,DFS进行,调用 DFS(当前->当前点父节点)->起点,思想,以栈为储存结构,保存路径。
非优先队列:504 KB 0ms
#include
#incl...
分类:
其他好文 时间:
2014-08-29 21:28:18
阅读次数:
297
UVA 10798 - Be wary of Roses
题目链接
题意:给定一个地图,人一开始在中心,问选择一种走法走出去,使得面朝任何一个方向走,踩到的花的最大值最小
思路:用优先队列进行BFS,每次取出踩到最少的情况,广搜记录状态为当前位置,和4个方向分别踩到的花数
代码:
#include
#include
#include
#include
usin...
分类:
其他好文 时间:
2014-08-28 19:52:36
阅读次数:
303
写程序将一个栈按升序排序。对这个栈是如何实现的,你不应该做任何特殊的假设。
程序中能用到的栈操作有:push | pop |isEmpty
最容易想到的就是优先队列来做此题,容易实现。
另外我们可以再用一个栈来实现栈的升序排列。
优先队列:
//优先队列来实现
void sortStack(std::stack& vStk)
{
std::priority_queue, std::gr...
分类:
其他好文 时间:
2014-08-28 02:07:58
阅读次数:
197
UVA 11573 - Ocean Currents
题目链接
题意:给定一个海面,数字分别代表海流方向,顺着海流不用费能量,逆海流要费1点能量,每次询问给一个起点一个终点,问起点到终点耗费的最小能量
思路:广搜,队列用优先队列,每次取能量最低的点出来进行状态的转移
代码:
#include
#include
#include
using namespace s...
分类:
其他好文 时间:
2014-08-28 02:05:49
阅读次数:
218