k短路&可并堆
文章平均质量分 79
thy_asdf
我也不知道说什么...
展开
-
bzoj1455: 罗马游戏
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1455思路:左偏树练习题用并查集维护连通,然后开个数组记录每个人是否已被杀死,用可并堆支持合并和求最小值左偏树是一种支持合并的堆,写起来比手写堆还要短...只有一个操作,merge(a,b),就是把a,b合并...具体构建参见论文:http://wenku.baidu.原创 2016-04-22 15:13:35 · 393 阅读 · 0 评论 -
bzoj2809: [Apio2012]dispatching
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2809思路:很明显忍者之间的关系是一个树形结构先自底向上枚举管理者x,那么根据题意,我们就要从x的子树中选择尽量多的忍者,且工资总和不超过m用一个可并堆到一个点x,就把它的儿子节点的可并堆并起来显然优先选工资低的,那么维护大根堆,不停地删堆顶,直到工资满足预算即可#原创 2016-04-22 15:32:30 · 433 阅读 · 0 评论 -
bzoj1598: [Usaco2008 Mar]牛跑步
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1598思路:裸的k短路,直接用A*+堆即可A*就是引入一个估价函数h(x)=f(x)+g(x)优先选择估价小的去搜索f(x)就是当前到的x已花费代价g(x)就是估计x到终点还要多少代价这里f(x)就是出发点S到x的距离g(x)就是x到终止点T的距离g(x)可原创 2016-04-22 15:51:48 · 825 阅读 · 0 评论 -
bzoj1975: [Sdoi2010]魔法猪学院
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1975思路:可以用A*做,但是要手写堆或者用pb_ds的堆,不然会被卡空间(原题256M,bzoj64M...)设出发点为S,结束点为T,边权为val(e),边的出发点为head(e),到达点为tai(e)也可以用论文方法,参见俞鼎力的《堆的可持久化和k短路》论文首先我原创 2016-04-22 16:30:18 · 957 阅读 · 0 评论