题目:poj 2449 Remmarguts' Date
题意:给出一个图,求k短路。
算法:SPFA求最短路 + AStar
下面引用大牛的分析:
首先,为了说话方便,列出一些术语:
在启发式搜索中,对于每个状态 x,启发函数 f(x) 通常是这样的形式:
f(x) = g(x) + h(x)
...
分类:
其他好文 时间:
2014-11-07 13:09:16
阅读次数:
156
〖程序清单〗初始化:fori:=1tondofather[i]:=i;因为每个元素属于单独的一个集合,所以每个元素以自己作为根结点。寻找根结点编号并压缩路径:functiongetfather(v:integer):integer;beginiffather[v]=vthenexit(v);fath...
分类:
其他好文 时间:
2014-11-04 09:15:44
阅读次数:
119
一、前言质因数分解,是一个在算法竞赛里老生常谈的经典问题。我们在解决许多问题的时候需要用到质因数分解来辅助运算,而且质因数分解牵扯到许许多多经典高效的算法,例如miller-rabin判断素数算法,rho启发式搜索质因数分解算法等。在此文里,我要介绍的就是miller-rabin算法以及rho启发式...
分类:
其他好文 时间:
2014-10-27 17:04:58
阅读次数:
348
题目大意:给定一棵树,选定一棵子树中的一些点,薪水和不能超过m,求点的数量*子树根节点的领导能力的最大值
考虑对于每个节点,我们维护一种数据结构,在其中贪心寻找薪金小的雇佣。
每个节点暴力重建一定不行,我们考虑可并数据结构,每个节点将子节点的信息直接合并即可
可以用启发式合并的Treap,也可以用可并堆
今天特意去学了这玩应0.0 先写了左偏树 然后又写了下随机堆…… 后者速度上更快一些 ...
题目大意:给定n个布丁,每个布丁有一个颜色,多次将某种颜色的所有布丁变为另一种颜色,多次询问颜色段数
数据范围:n
链表的启发式合并0.0 一直没写明白 其实就是开个链表记录每种颜色的位置,合并时撸一遍短的链看看两边是不是长链的颜色就行
不过交换比较麻烦0.0 要开个数组记录每个数字代表的真实颜色 交换时把数组的这两个位置也交换下就可以了
注意用过的垃圾不要留在原位 size合并掉就清零 ...
分类:
其他好文 时间:
2014-10-24 14:40:30
阅读次数:
146
题目大意:给出一棵树,每一个节点有两个值,分别是这个忍者的薪水和忍者的领导力。客户的满意程度是这个点的领导力乘能够取得人数,前提是取的人的薪水总和不超过总的钱数。
思路:只能在子树中操作,贪心的想,我们只要这个子树中cost最小的那些点就可以了。所以就深搜一次,每到一个节点上,把自己和所有子节点的平衡树启发式和并,然后保留不超过总钱数的人数,统计。数据范围比较大,能开long long的...
题目大意:给定一个无向图以及n个点的排名,多次连接一条边,多次求某个点所在联通块中排名第k小的点的编号
初始对于每个点建立一棵只有一个节点的Treap,然后每次连接两个点,利用并查集找到两个点的根节点,将size较小的Treap暴力拆解插入大的中,然后将小的并查集合并到大的中
今天下午各种脑残,一个小小的Treap改了不下10遍0.0 快去喝脑白金0.0
#include
#include
...
分类:
其他好文 时间:
2014-10-23 17:42:12
阅读次数:
228
题目大意:给出一个森林,每个节点都有一个权值。有若干加边操作,问两点之间路径上的第k小权值是多少。
思路:这题和COT1比较像,但是多了连接操作。这样就只能暴力合并连个树。启发式合并会保证时间复杂度不至于太大。然后就是用可持久化线段树维护一个树的信息,按照dfs序来建树,每个节点的可持久化链的参考版本就是它父亲的版本。之后利用权值线段树可区间加减的特性,用f[x] + f[y] - f[...
分类:
其他好文 时间:
2014-10-21 10:26:39
阅读次数:
265
题目大意:同3673 强制在线
同3673 只不过慢了一些0.0
这道题只写路径压缩比只写启发式合并要快一点点 两个都写就慢的要死0.0
改代码RE的可能是内存不够
#include
#include
#include
#include
#define M 200200
using namespace std;
struct Tree{
Tree *ls,*rs;
int num;
}...
分类:
其他好文 时间:
2014-10-20 19:30:35
阅读次数:
164
题目大意:给定一棵森林,每个点有权值,提供两种操作:
1.查询两点间路径上第k小的权值
2.将两个点之间连一条边 保证连接后仍是一座森林
可持久化线段树部分同Count On A Tree 只是这道题加了个连接操作
对于连接操作我们要用到启发式合并 就是把小的那棵树暴力重建 很简单的一个操作但是可以证明是均摊O(nlogn)的
大小我用了并查集 其实记录根就可以了
此外本题的多组数据是...
分类:
其他好文 时间:
2014-10-20 13:36:39
阅读次数:
291