- 博客(7)
- 资源 (13)
- 收藏
- 关注
翻译 KM算法(二分图最大权匹配)
http://blog.163.com/huangbingliang@yeah/blog/static/94161399201011291044527/复杂度O(n^3)。#include #include #include using namespace std;const int N = 305;const int Inf = 1e9;int top,mat
2013-03-22 13:26:39 809
原创 SPOJ 3273 Order statistic set(Treap应用)
题目链接:Click here~~题意:设计一个数据结构,可以在log(n)的时间内插入、删除、返回第 k 大、求某值的 rank。解题思路:可以给在 treap 的基础上,每个节点加个size 记录总共涵盖多少节点。调了一天,终于调出来了。好累啊。对于 null 节点取 size 的时候要格外小心,否则会指针访问未知内存,导致RE。
2013-03-19 12:20:32 1178
翻译 Treap 的实现
学会 BST 后,Treap 就比较好学了。在 BST 的基础上,给每个节点加个随机的优先值,然后类似 Heap 的维护,让树中每个父节点的优先值大于子节点的优先值。这样随机以后,树高的期望高度被证明为 log(n)。从而使得操作的复杂度为 log(n) 。/* Title : Treap Author: nyist_xiaod Date : 2013
2013-03-17 21:05:23 919
翻译 二叉排序树(BinarySortTree)的实现
/* Title : Binary Sort Tree Author: nyist_xiaod Date : 2013.3.16*/#include #include #include using namespace std;#define BSTdef#define Pnn pair#ifdef BSTdef#define Pre(root,par
2013-03-16 20:57:05 981
原创 HDU 1051 Wooden Sticks(LIS)
题目链接:Click here~~题意:很经典的问题,记得是黑书上的一道思考题。模型转换完之后意思大概就是,给一个二元组,给一个偏序关系a1解题思路:首先,有个贪心的解法,不过还不会证明正确性,复杂度O(n^2)。#include #include #include #include using namespace std;co
2013-03-16 20:33:21 1028
翻译 堆(Heap)的实现
学习了 Heap,其实不难。用途:在 O(log(n)) 的时间内插入、返回和删除最大值或最小值。它是这样一颗二叉树,父节点的值总是大于(小于)子节点的值(为了方便,我们把这句称作“要求”)。显然,Heap 的树根就是那个动态的最大值或最小值。首先需要一个维护堆的性质的函数 heapify,它的作用是,当以节点 i 为根的堆不满足要求时,调用这个函数使其满足要求。
2013-03-14 21:38:50 1037
原创 HDU 1401 Solitaire(双向BFS)
题目链接:Click here~~题意:1个8x8的棋盘有4个棋子,棋子可以上下左右走(包括跳过相邻的一个)。给出初始状态与目标状态,问8步之内,能否到达。解题思路:一直听说有“双向BFS”这个词,今天终于学了。如果单纯从1个状态开始搜索的话,每步有16种状态需要扩展,复杂度为O(16^8),不可解。如果从2个状态同时搜,那么,每个状态只
2013-03-07 15:42:15 1244
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人