双参数Bellman-ford带队列优化类似于背包问题的递推
为方便起见,将Bellman-ford队列优化称为SPFA,= =
抓住 ZMF (ZMF.pas/c/cpp)
题目描述
输入格式
第一行有两个数 N 和 P,分别表示座位个数(包括 MR.LI,MR.LI 的编号为 1,ZMF 的编号为 N) 和 ZMF 的警觉程度(即允许响声和的最大值)。N<=50,P<=50
接下来的 N 行,每行有 N 个数,第 I 行第 J 个数表示从 I 走到 J 的路程。0 表示不可到达。
最后有 N 行,每行 N 个数,第 I 行第 J 个数表示从 I 走到 J 所发出的响声。
输出格式
测试数据
输入
____________________
5 5
0 100 100 1 1
0 0 0 0 100
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 1 1 10 100
0 0 0 0 2
0 0 0 0 0
0 0 0 0 0
输出
____________________
200
这是一道例题。
首先,我们可以发现,是一个较为传统的最短路题。只是多了限制条件,响声和不能大于某个数。
那么可以将每条边的响声值设为重量,这就是一个背包问题了。但是要同时求出最短路(仁义厚道的是无需输出方案),怎么办呢?
注意到DP背包问题是DP的形式,F[余下总重]=max{F[余下总重],F[余下总重-w[当前节点]]+v[当前节点]}
由于是蒟蒻,以前没做过类似的题目= =,然后就SB了。受到WJZ大神的启发。。
而SPFA的松弛, 和背包问题很类似,F[i]=min{F[i],F[j]+P[j][i]}我们可以将它看成是DP。那么让我们加一维,变成这样:
F[i][j]=min{F[i][j],F[k][j-w[k][i]]+P[k][i]}
这样可以保证答案是由可行的路径松弛而来的,由于j是有范围的。
最后膜拜WJZ大神!今年一定是要Au的节奏!>_< [//如果没有Au一定是数据错了恩
双参数Bellman-ford带队列优化类似于背包问题的递推的更多相关文章
- POJ 1742 (单调队列优化多重背包+混合背包)
(点击此处查看原题) 题意分析 给你n种不同价值的硬币,价值为val[1],val[2]...val[n],每种价值的硬币有num[1],num[2]...num[n]个,问使用这n种硬币可以凑齐[1 ...
- poj1860 bellman—ford队列优化 Currency Exchange
Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 22123 Accepted: 799 ...
- 关于SPFA的双端队列优化
7.11 Update 我做题的时候发现这样写会RE 因为在使用双端队列优化SPFA的时候 在将一个点加入队列的时候,如果队列已经空了 那么一旦出现dis[Q.front()]就会RE 可以这样修改 ...
- Vijos1834 NOI2005 瑰丽华尔兹 动态规划 单调双端队列优化
设dp[t][x][y]表示处理完前t个时间段,钢琴停留在(x,y)处,最多可以走多少个格子 转移时只需逆着当前倾斜的方向统计len个格子(len为时间区间的长度,len=t-s+1),如果遇到障碍就 ...
- poj 3259 Wormholes : spfa 双端队列优化 判负环 O(k*E)
/** problem: http://poj.org/problem?id=3259 spfa判负环: 当有个点被松弛了n次,则这个点必定为负环中的一个点(n为点的个数) spfa双端队列优化: 维 ...
- 队列优化dijsktra(SPFA)的玄学优化
转载:大佬博客 最近想到了许多优化spfa的方法,这里想写个日报与大家探讨下 前置知识:spfa(不带任何优化) 由于使用较多 STLSTL ,本文中所有代码的评测均开启 O_2O2 优化 对一些数 ...
- 单调队列优化&&P1886 滑动窗口题解
单调队列: 顾名思义,就是队列中元素是单调的(单增或者单减). 在某些问题中能够优化复杂度. 在dp问题中,有一个专题动态规划的单调队列优化,以后会更新(现在还是太菜了不会). 在你看到类似于滑动定长 ...
- 单调队列以及单调队列优化DP
单调队列定义: 其实单调队列就是一种队列内的元素有单调性的队列,因为其单调性所以经常会被用来维护区间最值或者降低DP的维数已达到降维来减少空间及时间的目的. 单调队列的一般应用: 1.维护区间最值 2 ...
- 算法笔记--单调队列优化dp
单调队列:队列中元素单调递增或递减,可以用双端队列实现(deque),队列的前面和后面都可以入队出队. 单调队列优化dp: 问题引入: dp[i] = min( a[j] ) ,i-m < j ...
随机推荐
- 4、面向对象以及winform的简单运用(继承与多态、命名空间与类库)
继承 继承既子类与父类之间的关系.子类是父类的一种特例,子类拥有父类所没有的功能. 子类与父类之间的相互赋值——例: Parent p; Son c = new Son(); p = c; //正确, ...
- Javascript基础系列之(六)循环语句(do while循环)
do/while 循环是 while 循环的变体.该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环. 语法结构如下 do { statement } while ...
- UITableViewdataSourse的协议所有方法
UITableViewDataSource @required- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection ...
- Callable、Future和FutureTask
创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口.这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就必须通过共享变量或者使用线 ...
- ibatis selectKey用法问题
其实就是相为SHIPMENT_HISTORY表加入一个主键sequence id shipmentHistoryId,加入一条记录,然后返回这个sequence id xml 代码 <inser ...
- 【BZOJ 3196】二逼平衡树 线段树套splay 模板题
我写的是线段树套splay,网上很多人写的都是套treap,然而本蒟蒻并不会treap 奉上sth神犇的模板: //bzoj3196 二逼平衡树,支持修改某个点的值,查询区间第k小值,查询区间某个值排 ...
- Java设计模式-组合模式(Composite)
组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图: 直接来看代码: public class TreeNode { private String name; private ...
- Netbeans 中的编译器相关配置
gcc-core:C 编译器 gcc-g++:C++ 编译器 gdb:GNU 调试器 make:"make" 实用程序的 GNU 版本
- c#截图
private void Form_Load(object sender, EventArgs e){ //接收web url string colle = string.Empty; stri ...
- 001-编译hadoop-2.5.2总结
前两天废了很大的劲来对hadoop-2.5.2进行64位系统的手动编译,由于对linux系统环境以及hadoop本身的不熟悉,编译过程中也出现了很多的问题,在此记录一下,对自己以后再次编译和看到此文章 ...