描述

物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是修改路线是一件十分麻烦的事情,会带来额外的成本。因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小。

分析

  • dp
  • f[i] : 前i天最小成本
  • f[i] = f[j] + k + cost[i+1][j] // cost[a][b] 表示第 a 天到第 b 天用同一条线路的成本.
  • 用 spfa 预处理出 cost, 暴力的做法即可.

代码

#include #include #include #include #include using namespace std; const int maxn = 20 + 5; const int maxm = 100 + 10; const int INF = 0x3f3f3f3f; struct Edge { int from, to, dist; }; struct SPFA { int n, m, s, t; int d[maxn]; bool ban[maxn], inq[maxn]; vectoredges; vectorG[maxn]; void init(int n, int s, int t) { this->n = n; this->s = s; this->t = t; } void AddEdge(int from, int to, int dist) { edges.push_back((Edge){from, to, dist}); edges.push_back((Edge){to, from, dist}); m = edges.size(); G[from].push_back(m-2); G[to].push_back(m-1); } int spfa(int x, int y) { queueQ; memset(d, 0x3f, sizeof(d)); Q.push(s); inq[s] = 1; d[s] = 0; while(!Q.empty()) { int u = Q.front(); Q.pop(); inq[u] = 0; for(int i = 0; i < G[u].size(); i++) { Edge& e = edges[G[u][i]]; if(!ban[e.to] && d[e.to] > d[u] + e.dist) { d[e.to] = d[u] + e.dist; if(!inq[e.to]) Q.push(e.to), inq[e.to] = 1; } } } return d[t]; } }g; bool ban[maxn][maxm]; int dis[maxm][maxm], f[maxm]; int main() { int n, m, k, e, d; scanf("%d %d %d %d", &m, &n, &k, &e); g.init(n, 1, n); for(int i = 0; i < e; i++) { int from, to, dist; scanf("%d %d %d", &from, &to, &dist); g.AddEdge(from, to, dist); } scanf("%d", &d); for(int i = 0; i < d; i++) { int a, x, y; scanf("%d %d %d", &a, &x, &y); for(int j = x; j <= y; j++) ban[a][j] = 1; } for(int x = 1; x <= m; x++) for(int y = x; y <= m; y++) { memset(g.ban, 0, sizeof(g.ban)); for(int i = 1; i <= n; i++) for(int j = x; j <= y; j++) if(ban[i][j]) { g.ban[i] = 1; break; } dis[x][y] = g.spfa(x, y); } memset(f, 0x3f, sizeof(f)); f[0] = 0; for(int i = 1; i <= m; i++) for(int j = 0; j < i; j++) if(dis[j+1][i] != INF) f[i] = min(f[i], f[j] + k + dis[j+1][i]*(i-j)); printf("%d\n", f[m]-k); return 0; } 

BZOJ-1003-物流运输trans-ZJOI2006-SPFA+DP相关推荐

  1. 【BZOJ】1003: [ZJOI2006]物流运输trans(SPFA+DP)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1003 这题一开始看是不会的额,,,还是看题解了..一开始我觉得不能用最短路啥的,,看了题解发现这是d ...

  2. BZOJ 1003 物流运输trans dijstra+dp

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1003 题意: 题解: 首先我们必须机智的知道f[i]=min(f[i],f[j]+cos ...

  3. BZOJ 1003 物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 6766  Solved: 2796 [Submit][St ...

  4. [BZOJ]1003 物流运输题解

    BZOJ1003 物流运输 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转 停好几个码头.物流公司通常会设计一条固定的运输路 ...

  5. bzoj 1003物流运输 区间dp+spfa

    基本思路: 一开始确实没什么思路,因为觉得怎么着都会超时,然后看一下数据范围,呵,怎么都不会超时. 思路: 1.看到能改变线路,想到可以用以下区间dp,区间dp的话,先枚举长度,枚举开始位置,然后枚举 ...

  6. BZOJ 1003 物流运输 最短路+dp

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1003 题目大意: 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才 ...

  7. 【bzoj1003】[ZJOI2006]物流运输trans 最短路+dp

    非常容易的dp,一开始竟然还卡了一下. dp[i]表示到第i天的最小花费 dp[i]=min{dp[j]+cost[j+1][i]*(i-j)+k} (0<=j<i) cost[i][j] ...

  8. BZOJ 1003: [ZJOI2006]物流运输trans

    二次联通门 : BZOJ 1003: [ZJOI2006]物流运输trans /*BZOJ 1003: [ZJOI2006]物流运输transSpfa + DpSpfa预处理出i到j天的最小花费然后N ...

  9. [bzoj1003]物流运输trans

    1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3922  Solved: 1624 [Submi ...

  10. BZOJ1003: [ZJOI2006]物流运输trans(DP)

    传送门 额,这道题拿到过后没有什么有建树的想法--甚至根本就没有往DP哪方面去向(还是题见少了,人太笨了--)所以就偷偷的看了一下discuss,看到了状态转移方程才恍然大悟. f(i)=f(j)+d ...

最新文章

  1. List(Map(String, Object))转为Fastjson JSONArray
  2. 【Qt】QModbusClient类
  3. node.js HelloWord
  4. @@Autowired依赖注入先后顺序
  5. Win7激活工具的原理是什么?
  6. 一篇文章教会你用Python抓取抖音App热点数据
  7. 制作和合入patch补丁
  8. 普法Android.mk中的一些宏和Android.bp对应关系
  9. RV1126 OTG 功能
  10. 利用网络编程实现TFTP协议
  11. cad画不规则实体_cad画不规则曲线的方法步骤图
  12. 【TensorFlow】InternalError:Dst tensor is not initialized
  13. 摩托罗拉v3的java游戏_重温经典!全新摩托罗拉V3采用折叠屏幕,街机王者归来!...
  14. 颠覆性AI程序:人工智能如何推动天文学创新?
  15. cesesesese
  16. 广告狂人第一至七季/全集Mad Men迅雷下载
  17. [经典收藏]花语大全
  18. ue4 无限地图_如何使用UE4创建完整游戏地图_资源库
  19. Deeper Network 最新款硬件设备 Pico 竞拍活动遭疯抢,生态价值再创新高
  20. 交通行业管理有新招:基于低代码平台的重大事项综合管理系统

热门文章

  1. ustc小道消息20211227
  2. 科大星云诗社动态20210428
  3. 第01课:深度学习概述
  4. 用ConfigParser模块读写conf配置文件
  5. 统计特性和概率估计-2 (数学推导与证明)
  6. 贝叶斯决策思想的应用与延伸
  7. MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16
  8. 需求分析的20条法则
  9. 大富翁已成过去-我的一些感想
  10. BUUCTF-Reverse:xor(涉及异或脚本编写)