传送门
额,这道题拿到过后没有什么有建树的想法……甚至根本就没有往DP哪方面去向(还是题见少了,人太笨了……)所以就偷偷的看了一下discuss,看到了状态转移方程才恍然大悟。
f(i)=f(j)+dis(j+1,i)∗(i−j)+K其中(0<=j<i)f(i) = f(j) + dis(j+1, i)*(i-j) + K 其中 (0 KK是修改一次的花费,用dis(s,e)dis(s, e) 表示第s天到第e天都可以走过的路中从1到M的最短路,f(i)f(i)表示1-i天的最小总花费。dis可以直接暴力最短路求了保存下来。
是不是很明了了?
写的时候要注意防止溢出!被这个坑了好久……
代码:

/**************************************************************Problem: 1003User: geng4512Language: C++Result: AcceptedTime:40 msMemory:948 kb
****************************************************************/#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#define LL long long
using namespace std;
int dis[150][150], n, m, e, D, K;
#define MAXN 30
#define MAXM 900
struct node {int v, w; node *nxt;
}Edge[MAXM], *Adj[MAXN], *Mcnt = Edge;
void Addedge(int u, int v, int w) {node *t = ++ Mcnt;t->v = v; t->w = w; t->nxt = Adj[u];Adj[u] = t;
}
bool inq[MAXN];
int au[MAXN][105];
int d[MAXN];
LL f[MAXN];
void spfa(int S, int b, int e) {memset(d, 0x3f, sizeof d);queue<int> q;int u, v;d[S] = 0; q.push(S);while(!q.empty()) {u = q.front(); inq[u] = 0; q.pop();for(node *p = Adj[u]; p; p = p->nxt) {v = p->v;if(au[v][e] - au[v][b-1] > 0) continue;if(d[v] > d[u] + p->w) {d[v] = d[u] + p->w;if(!inq[v]) {q.push(v);inq[v] = 1;}}}}dis[b][e] = d[m];
}
void Fill(int u, int s, int e) {for(int i = s; i <= e; i ++)au[u][i] = 1;
}
int main()
{int u, v, w;scanf("%d%d%d%d", &n, &m, &K, &e);for(int i = 1; i <= e; i ++) {scanf("%d%d%d", &u, &v, &w);Addedge(u, v, w);Addedge(v, u, w);}scanf("%d", &D);for(int i = 1; i <= D; i ++) {scanf("%d%d%d", &u, &v, &w);Fill(u, v, w);}for(int i = 1; i <= m; i ++)for(int j = 1; j <= n; j ++)au[i][j] += au[i][j-1];for(int i = 1; i <= n; i ++) {for(int j = i; j <= n; j ++)spfa(1, i, j);}f[0] = -K;for(int i = 1; i <= n; i ++) {f[i] = 0x3f3f3f3f;for(int j = 0; j < i; j ++)f[i] = min(f[i], f[j] + 1LL*dis[j+1][i]*(i-j) + K);}printf("%d", f[n]);return 0;
}

BZOJ1003: [ZJOI2006]物流运输trans(DP)相关推荐

  1. [Bzoj1003][ZJOI2006]物流运输(spfa+dp)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1003 比较简单的dp,dp[i]为1-i天最小费用,dp方程为dp[i] = min(d ...

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

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

  3. BZOJ1003: [ZJOI2006]物流运输

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

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

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

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

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

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

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

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

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

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

  9. 【洛谷 - P1772 】[ZJOI2006]物流运输(dp)

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

最新文章

  1. stackoverflow上一个最会举例子的专家
  2. mysql 连接 查询 连表查询
  3. Exchange2003-2010迁移系列之六,配置及配置第二台Exchange CAS/HUB服务器
  4. 泰语7个元音变形_大概是最全的音标总结--元音部分
  5. 常见的网站服务器架构有哪些?
  6. Lua1.0 代码分析 opcode.c
  7. Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式
  8. 异步和同步http请求超时机制
  9. 208个地级市城市和农村总收入、可支配收入面板数据(2010-2019年)
  10. docker查看mysql日志_如何查看docker运行日志
  11. Redis数据结构之字符串对象
  12. 外卖联盟高级API - 怎么让小程序跳转到美团小程序领红包并下单
  13. 大智慧公式系统:条件选股之K线形态选股
  14. Dubbo+zookeeper
  15. 出炉!2021 编程语言排行榜~
  16. 【C语言】求一个数有多少位
  17. 2021年中国强脉冲光器械行业发展趋势分析:市场规模不断增长,进口品牌占比大[图]
  18. 以太坊:Etherscan 使用说明
  19. php k线图 echarts,股票K线图,折线图总结(echarts)
  20. 天融信java面试_天融信面试准备

热门文章

  1. 庞加莱 (Jules Henri Poincaré)
  2. C语言中的stdbool.h头文件
  3. 使用 Authing + Lambda 替代 AWS Cognito
  4. android学音标软件,英语音标学习助手
  5. Concurnas语言利用JVM开发高性能应用程序
  6. AutoCAD2019+vs2019+C# 二次开发学习笔记day05(持续更新)
  7. 服务端监控工具:Nmon使用方法
  8. Dos命令行修改文件夹路径里的文件
  9. TI高精度实验室-运算放大器-第十节-运放稳定性问题
  10. QGC地面站二次开发(一)地面站介绍以及软件框架(1)地面站使用介绍和接口介绍