「ZJOI2006」物流运输

题目描述

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

输入格式

第一行是四个整数 n(1≤n≤100),m(1≤m≤20),K,en(1\le n\le 100),m(1\le m\le 20),K,en(1≤n≤100),m(1≤m≤20),K,e。nnn 表示货物运输所需天数,mmm 表示码头总数,KKK 表示每次修改运输路线所需成本。

接下来 eee 行每行是一条航线描述,包括了三个整数,依次表示航线连接的两个码头编号以及航线长度 (>0)(>0)(>0)。其中码头 A 编号为 111,码头 B 编号为 mmm。单位长度的运输费用为 1。航线是双向的。

再接下来一行是一个整数 ddd,后面的 ddd 行每行是三个整数 P(1<P<m),a,b(1≤a≤b≤n)P(1<P<m),a,b(1\le a\le b\le n)P(1<P<m),a,b(1≤a≤b≤n)。表示编号为 PPP 的码头从第 aaa 天到第 bbb 天无法装卸货物(含头尾)。同一个码头有可能在多个时间段内不可用。但任何时间都存在至少一条从码头 AAA 到码头 BBB 的运输路线。

输出格式

包括了一个整数表示最小的总成本。总成本 =n=n=n 天运输路线长度之和 +K×+K\times+K× 改变运输路线的次数。

样例

样例输入

5 5 10 8
1 2 1
1 3 3
1 4 2
2 3 2
2 4 4
3 4 1
3 5 2
4 5 2
4
2 2 3
3 1 1
3 3 3
4 4 5

样例输出

32

题解

#include <iostream>
#include <cstdio>
#include <queue>
#define re register
using namespace std;
typedef long long ll;ll n, m, kk, e, d;
ll head[10007], pre[20007], to[20007], dis[20007], len, ans[20007];
ll cost[103][103], p[100007], a[100007], b[100007], dp[100007];
bool vis[10007];ll read() {ll ret = 0;char ch = getchar();while (ch > '9' || ch < '0') {ch = getchar();}while (ch <= '9' && ch >= '0') {ret = ret * 10 + ch - '0';ch = getchar();}return ret;
}void insert(ll u, ll v, ll w) {len++;to[len] = v, pre[len] = head[u], dis[len] = w, head[u] = len;
}void dijkstra() {priority_queue< pair<ll, ll> > q;q.push(make_pair(0, 1));ans[1] = 0;while (!q.empty()) {ll c = q.top().second;q.pop();if (vis[c]) continue;vis[c] = true;for (re ll i = head[c]; i != 0; i = pre[i]) {if (ans[c] + dis[i] < ans[to[i]]) {ans[to[i]] = ans[c] + dis[i];q.push(make_pair(-ans[to[i]], to[i]));}}}
}int main() {n = read(), m = read(), kk = read(), e = read();for (ll i = 1; i <= e; i++) {ll u, v, w;u = read(), v = read(), w = read();insert(u, v, w);insert(v, u, w);}d = read();for (ll i = 1; i <= d; i++) {p[i] = read(), a[i] = read(), b[i] = read();}for (ll i = 1; i <= n; i++) for (ll j = i; j <= n; j++) {for (ll k = 1; k <= m; k++) vis[k] = 0;for (ll k = 1; k <= m; k++) ans[k] = 0x7fffffff;for (ll k = 1; k <= d; k++) if ((a[k] >= i && a[k] <= j) || (b[k] >= i && b[k] <= j) || (a[k] <= i && b[k] >= j)) vis[p[k]] = 1;dijkstra();cost[i][j] = ans[m];//cout << i << " " << j << ": " <<cost[i][j] << endl;}for (ll i = 1; i <= n; i++) {dp[i] = 0x7fffffff;for (ll j = 0; j < i; j++) {if (cost[j + 1][i] == 0x7fffffff) continue;if (j != 0) dp[i] = min(dp[j] + cost[j + 1][i] * (i - j) + kk, dp[i]); else dp[i] = min(dp[j] + cost[j + 1][i] * (i - j), dp[i]); }}printf("%lld\n", dp[n]);return 0;
}

3297: 「ZJOI2006」物流运输相关推荐

  1. 【ZJOI2006】物流运输

    [ZJOI2006]物流运输 [题目描述] 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对 ...

  2. 【BZOJ1003】【ZJOI2006】物流运输trans 最短路预处理+动态规划

    链接: #include <stdio.h> int main() {puts("转载请注明出处[vmurder]谢谢");puts("网址:blog.csd ...

  3. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  4. BZOJ1003: [ZJOI2006]物流运输

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

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

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

  6. bzoj 1003: [ZJOI2006]物流运输

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

  7. P1772 [ZJOI2006]物流运输(线性dp+最短路径)

    P1772 [ZJOI2006]物流运输 题意 [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头 A 运到码头 B.由于货物量比较大,需要 nnn 天才能运完.货物运输过程中一般要转 ...

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

    传送门:嘿原题在这 题意:给出一个图,求1-m的最短路,但其中有些点在某些时间段会不能用,题目保证有解. 我们可以很(不)容易的看出递推关系式dp[i]=min(dp[i],dp[j]+cost[j+ ...

  9. 120万公里「真」无人商用里程如何炼成?出租车物流车车车无人,香港乌鲁木齐城城自动...

    贾浩楠 万博 发自 凹非寺 量子位 报道 | 公众号 QbitAI 全球率先实现无人车进入停机坪运营的机场,你可能想不到--乌鲁木齐国际机场. 新疆-20°严寒中,无人驾驶行李牵引车队穿梭在机场的机坪 ...

最新文章

  1. vsnprintf的作用和使用
  2. nacos如何搭建集群?nacos+nginx搭建集群,这一篇文章就够了!
  3. 初探swift语言的学习笔记十一(performSelector)
  4. matlab中rb代表什么意思,你知道“川藏线上”女游客举着“求RB”的牌子是啥意思吗?暗语啊!...
  5. Metamaterials perform image compression before light reaches the sensor(微波成像,拍摄与压缩同步进行)
  6. 万维网文档在服务器端动态,信息网络应用基础作业2.docx
  7. c++11 多线程编程(五)------unique_lock
  8. steam授权_验号机器人正式上线,支持检验csgo账号、steam账号信息
  9. 智能制造与供应链管理趋势
  10. 【科普向】5G核心网架构和关键技术
  11. 芯片可靠性测试要求及标准解析
  12. 【12NOIP普及组】质因数分解
  13. CTF隐写术知识点总结
  14. 中学计算机课体育课被占用,那些年被占用的体育课
  15. 接口的方式获取bing必应每天壁纸
  16. 小程序模板消息推送报错 “errcode“:40165,“errmsg“:“invalid weapp
  17. Linux 查看进程的几个命令
  18. fastjson中JSONArray和JSONObject
  19. 13.6.3 程序案例:BLE低功耗蓝牙调试助手
  20. V4L2视频采集与H264编码1—V4L2采集JPEG数据

热门文章

  1. Rdlc报表纵向与横向打印问题
  2. java redis 发送短信验证码
  3. poj2502 SubWay
  4. android 腾讯广告接入,cocos2dx 3.x android studio 添加广点通广告
  5. Multi-Scale Attention Network for Crowd Counting:用于人群计数的多尺度注意网络
  6. Proxmox VE(PVE)连接WiFi及一些配置
  7. 防止cint和clng的溢出出错
  8. 近十年来出现的计算机术语,近十年来科技英语翻译研究评述(2003—2012).doc
  9. 爬取下厨房网站菜名与食材
  10. 网站历史博物馆来过反爬