【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]表示从第i天到第j天的最短路,预处理即可。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#define inf 1000000000using namespace std;bool tag[21],a[21][110],vis[21];
int head[21],to[1010],next[1010],len[1010],dis[21],q[21];
int f[110][110],dp[110];
int n,m,num,k,Day,cnt;void addedge(int x,int y,int z)
{num++;to[num]=y;len[num]=z;next[num]=head[x];head[x]=num;
}void spfa()
{for (int i=2;i<=n;i++) dis[i]=inf;dis[1]=0;int l=0,r=1;q[1]=1;vis[1]=1;while (l!=r){l++;if (l==21) l=0;int x=q[l];for (int p=head[x];p;p=next[p])if (dis[x]+len[p]<dis[to[p]]){dis[to[p]]=dis[x]+len[p];if (!vis[to[p]] && !tag[to[p]]){r++;if (r==21) r=0;q[r]=to[p];vis[to[p]]=1;}}vis[x]=0;}
}int main()
{scanf("%d%d%d%d",&Day,&n,&k,&m);for (int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);addedge(x,y,z);addedge(y,x,z);}scanf("%d",&cnt);for (int i=1;i<=cnt;i++){int x,l,r;scanf("%d%d%d",&x,&l,&r);for (int j=l;j<=r;j++) a[x][j]=1;}for (int i=1;i<=Day;i++){memset(tag,0,sizeof(tag));for (int j=i;j<=Day;j++){for (int k=1;k<=n;k++) tag[k]|=a[k][j];spfa();f[i][j]=dis[n];}}dp[0]=-k;for (int i=1;i<=Day;i++){dp[i]=inf;for (int j=0;j<i;j++) if (f[j+1][i]!=inf) dp[i]=min(dp[i],dp[j]+f[j+1][i]*(i-j)+k);}printf("%d\n",dp[Day]);return 0;
}
【bzoj1003】[ZJOI2006]物流运输trans 最短路+dp相关推荐
- BZOJ1003: [ZJOI2006]物流运输trans(DP)
传送门 额,这道题拿到过后没有什么有建树的想法--甚至根本就没有往DP哪方面去向(还是题见少了,人太笨了--)所以就偷偷的看了一下discuss,看到了状态转移方程才恍然大悟. f(i)=f(j)+d ...
- 【BZOJ】1003: [ZJOI2006]物流运输trans(SPFA+DP)
http://www.lydsy.com/JudgeOnline/problem.php?id=1003 这题一开始看是不会的额,,,还是看题解了..一开始我觉得不能用最短路啥的,,看了题解发现这是d ...
- BZOJ 1003: [ZJOI2006]物流运输trans
二次联通门 : BZOJ 1003: [ZJOI2006]物流运输trans /*BZOJ 1003: [ZJOI2006]物流运输transSpfa + DpSpfa预处理出i到j天的最小花费然后N ...
- BZOJ1003: [ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 8800 Solved: 3747 [Submit][St ...
- bzoj1003 [ZJOI2006]物流运输(最短路+dp)
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转 停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严 ...
- 【BZOJ1003】【ZJOI2006】物流运输trans 最短路预处理+动态规划
链接: #include <stdio.h> int main() {puts("转载请注明出处[vmurder]谢谢");puts("网址:blog.csd ...
- [Bzoj1003][ZJOI2006]物流运输(spfa+dp)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1003 比较简单的dp,dp[i]为1-i天最小费用,dp方程为dp[i] = min(d ...
- 【BZOJ1003】【codevs1655】物流运输,最短路+DP
传送门1 传送门2 思路: 一直跑最短路不一定是最优解 g[i][j]表示仅走i~j天可通过的码头的最短路 f[i]表示走到第i天的最短路 f[i]=min(f[j]+g[j+1][i]*(i-j)+ ...
- 【数据结构】物流运输(最短路DP)
题面 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和 ...
最新文章
- python【Matlibplot绘图库】优雅的画极坐标(玫瑰)图
- wp自定义帖子没标签_拼多多搜索智能推广和自定义推广区别在哪里?
- Halcon算子翻译——default
- spark stage 划分 源码
- 【报告分享】2020中国教育行业生存实录.pdf(附下载链接)
- c++并发编程基础(一):并发、并行域多线程
- jwt如何防止token被窃取_如何使用 NodeJS 实现 JWT 原理
- iperf3 网络探测详解(android、iOS、windows)
- 针对吞吐量优化的架构
- httpclient4 post提交请求乱码问题解决
- 苹果公司开发者账号申请——Apple Developer Program
- 162-SOP8液晶手写板专用IC
- python break怎么用_怎么使用Python中的break
- 如何让图片变成全景图,vr全景图怎么拍摄和制作
- 2021年第十二届蓝桥杯省赛C/C++B组题解总结
- android 单点登录
- 【CSS】955- 你该知道的字体 font-family
- MATLAB_LSB_隐藏水印和提取,附代码
- IOS ReplayKit RPScreenRecorder 的屏幕录制功能
- 金山软件2015校园招聘