题目链接

http://www.lydsy.com/JudgeOnline/problem.php?id=1003

思路

先Dijkstra暴力求出i..j天内不变换路线的最少花费,然后dp[i] = min(cost[1..i], dp[j]+cost[j+1][i]+K). 总结: 1. BZOJ 题目质量果然高啊……做一道一次升华…… 2.自己太弱……

代码

[cpp] #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <string> #include <cstring> #include <vector> #include <queue> #define MID(x,y) ((x+y)/2) #define MEM(a,b) memset(a,b,sizeof(a)) using namespace std; struct edge{ int v, w; edge(int _v, int _w){ v = _v, w = _w; } }; typedef vector <edge> VI; priority_queue <pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > PQ; const int maxn = 25; VI adj[maxn]; int n, m, K, e, d; int cost[105][105], dist[maxn], flag[25][105], dp[105]; bool vis[maxn]; void dij(int l, int r){ while(!PQ.empty()) PQ.pop(); MEM(vis, 0); for (int i = 2; i <= m; i ++) dist[i] = 0x3fffffff; for (int i = 1; i <= m; i ++) for (int j = l; j <= r; j ++) if (flag[i][j]){ vis[i] = 1; break; } dist[1] = 0; PQ.push(make_pair(0, 1)); while(!PQ.empty()){ int u = PQ.top().second; PQ.pop(); for (int i = 0; i < (int)adj[u].size(); i ++){ int v = adj[u][i].v; if (!vis[v] && dist[v] > dist[u] + adj[u][i].w){ dist[v] = dist[u] + adj[u][i].w; PQ.push(make_pair(dist[v], v)); } } } if (dist[m] != 0x3fffffff) cost[l][r] = (r - l + 1) * dist[m]; else cost[l][r] = 0x3fffffff; //printf("l = %d r = %d cost = %d\n", l, r, cost[l][r]); } int main(){ //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); scanf("%d %d %d %d", &n, &m, &K, &e); for (int i = 0; i <= m; i ++) adj[i].clear(); for (int i = 0; i < e; i ++){ int u, v, w; scanf("%d %d %d", &u, &v, &w); adj[u].push_back(edge(v, w)); adj[v].push_back(edge(u, w)); } scanf("%d", &d); MEM(flag, 0); for (int i = 0; i < d; i ++){ int p, l, r; scanf("%d %d %d", &p, &l, &r); for(int j = l; j <= r; j ++) flag[p][j] = 1; } for (int i = 1; i <= n; i ++){ for (int j = i; j <= n; j ++){ dij(i, j); } } for (int i = 1; i <= n; i ++) dp[i] = 0x3fffffff; dp[0] = 0; for (int i = 1; i <= n; i ++){ dp[i] = cost[1][i]; for (int j = 0; j < i; j ++){ if (cost[j+1][i] == 0x3fffffff) continue; dp[i] = min(dp[i], dp[j] + cost[j+1][i] + K); } } printf("%d\n", dp[n]); return 0; } [/cpp]

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114341.html

BZOJ 1003 [ZJOI2006]物流运输trans ★(Dijkstra + DP)相关推荐

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

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

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

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

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

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

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

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

  5. 1003. [ZJOI2006]物流运输【区间DP+最短路】

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

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

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

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

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

  8. 【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] ...

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

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

  10. bzoj1003 [ZJOI2006]物流运输(最短路+dp)

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

最新文章

  1. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 共轭对称序列 x_e(n) 的 傅里叶变换 是 原序列傅里叶变换 的实部 )
  2. ffmpeg使用总结
  3. python 创建空的numpy数组_Numpy入门教程:01. 数组的创建与属性
  4. 《java设计模式》之责任链模式
  5. 三十功名尘与土——资深程序员生涯自白
  6. 设计师必读的15个响应式网页设计教程
  7. 吉林农业科技学院计算机大师,吉林农业科技学院
  8. FGUI使用方法(四):List列表的详细使用方式,包括List嵌套List
  9. 办公自动化计算机操作试题及答案,办公自动化考试试题及答案
  10. win10卸载office2010卸载途中就自动重启重复出现
  11. 这个时代,“寒门再难处贵子”【转载】
  12. Invalid regular expression: invalid group specifier name safari白屏 chrome正常
  13. xiuno论坛部署及常见问题处理
  14. 004/160 CrackMe ajj CKme
  15. CAD绘图布局中有部分模型显示不出来怎么办?
  16. 洛谷 P1359 租用游艇
  17. 【微服务】Spring Cloud 基础
  18. python asyncio future_Python 期物之 asyncio.Future
  19. 微电子学与计算机格式范文,微电子学与计算机
  20. printf用法补录

热门文章

  1. 【js高级程序设计】迭代器
  2. 谈谈持久连接——HTTP权威指南读书心得(五)
  3. Kubernetes系统架构演进过程与背后驱动的原因
  4. 查看各浏览器各版本的兼容情况
  5. etymon word flower bee apiary forget out~1
  6. Java-实现异地登陆和超时登陆
  7. Imagick 处理gif psd格式
  8. 点对点(P2P)多线程断点续传的实现(转贴)
  9. 33.go 错误处理
  10. 42. netcat