博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【洛谷 P1772】 [ZJOI2006]物流运输(Spfa,dp)
阅读量:4676 次
发布时间:2019-06-09

本文共 2264 字,大约阅读时间需要 7 分钟。

\(g[i][j]\)表示不走在\(i\text{~}j\)时间段中会关闭的港口(哪怕只关\(1\)天)从\(1\)\(m\)的最短路。
\(f[i]\)表示前\(i\)天的最小花费。于是有:
\[f[i]=\min_{j=0}^{i-1}[f[j]+g[i][j]*(i-j)+k]\]
就是枚举在哪天改计划。。
边界\(f[0]=-k\)因为初始计划不算改。其它均为\(INF\)

#include 
#include
#include
#define INF 1000000000using namespace std;const int MAXM = 25;const int MAXN = 110;const int MAXD = 10010;inline int read(){ int s = 0, w = 1; char ch = getchar(); while(ch < '0' || ch > '9'){ if(ch == '-') w = -1; ch = getchar(); } while(ch >= '0' && ch <= '9'){ s = s * 10 + ch - '0'; ch = getchar(); } return s * w;}struct Edge{ int next, to, dis, id;}e[MAXN * MAXN << 1];int head[MAXN], num;inline void Add(int from, int to, int dis, int id){ e[++num] = (Edge){ head[from], to, dis, id }; head[from] = num; e[++num] = (Edge){ head[to], from, dis, id }; head[to] = num;}int n, m, k, t, a, b, c, d, u;int l[MAXD], r[MAXD], p[MAXD], dis[MAXM], v[MAXM], ban[MAXM], f[MAXN], g[MAXN][MAXN];queue
q;int main(){ n = read(); m = read(); k = read(); t = read(); for(int i = 1; i <= t; ++i){ a = read(); b = read(); c = read(); Add(a, b, c, i); } d = read(); for(int i = 1; i <= d; ++i){ p[i] = read(); l[i] = read(); r[i] = read(); } for(int i = 1; i <= n; ++i) for(int j = i; j <= n; ++j){ for(int o = 2; o <= m; ++o) dis[o] = INF, v[o] = ban[o] = 0; for(int o = 1; o <= d; ++o) if(r[o] >= i && l[o] <= j) ban[p[o]] = 1; while(q.size()) q.pop(); q.push(1); while(q.size()){ u = q.front(); q.pop(); v[u] = 0; for(int o = head[u]; o; o = e[o].next) if(!ban[e[o].to] && dis[e[o].to] > dis[u] + e[o].dis){ dis[e[o].to] = dis[u] + e[o].dis; if(!v[e[o].to]) q.push(e[o].to); } } g[i][j] = dis[m]; } for(int i = 1; i <= n; ++i) f[i] = INF; f[0] = -k; for(int i = 1; i <= n; ++i) for(int j = 0; j < i; ++j) f[i] = min(f[i], f[j] + (int)min((long long)INF, (long long)g[j + 1][i] * (i - j)) + k); printf("%d\n", f[n]); return 0;}

转载于:https://www.cnblogs.com/Qihoo360/p/10325997.html

你可能感兴趣的文章
菜鸟的MySQL学习笔记(三)
查看>>
商业选址5A法则
查看>>
POJ 1191 棋盘分割(区间DP)题解
查看>>
文件同步服务器,iis 集群 ,代码同步(一)
查看>>
JS之模板技术(aui / artTemplate)
查看>>
【Tomcat】Tomcat Connector的三种运行模式【bio、nio、apr】
查看>>
Mysql-2-数据库基础
查看>>
python把源代码打包成.exe文件
查看>>
再也不用担心网吧开黑队友听不清了!降噪解决方案了解一下?
查看>>
PhotoshopCS5中将单位修改成百分比
查看>>
赵雅智:js知识点汇总
查看>>
变形二叉树中节点的最大距离(树的最长路径)——非递归解法
查看>>
cocos2d-x 3.0rc1 编译cpp-testsproject
查看>>
《Java虚拟机原理图解》1.3、class文件里的訪问标志、类索引、父类索引、接口索引集合...
查看>>
三种常见的图像处理双三次插值算法
查看>>
开玩笑html5(五岁以下儿童)---绕地球月球,地球绕太阳运动(canvas实现,同样可以移动哦)...
查看>>
安卓启动相关以及架构设计相关
查看>>
第十四届华中科技大学程序设计竞赛--J Various Tree
查看>>
python面试题No2
查看>>
插入排序
查看>>