链接:

#include <stdio.h>
int main()
{puts("转载请注明出处[vmurder]谢谢");puts("网址:blog.csdn.net/vmurder/article/details/44569117");
}

题解:

首先我们跑出 fi,j f_{i,j}表示i到j这些天都是相同路线的最小代价。
然后暴力维护 gi g_i表示前i天最小代价。

fi,j f_{i,j}可以枚举 i,j i,j,暴力处理哪些点不能用,然后跑最短路。
时间复杂度
暴力处理废点 O(n3m) O(n^3m)
SPFA 是 O(n2spfa) O(n^2 spfa)大约 O(n2m2)? O(n^2m^2)?

反正能过。
然后暴力处理废点部分可以缩掉一个 n n降低时间复杂度上限。
就是类似利用单调性质哒。每次枚举ii后都单调处理。详见代码。

代码:

p、n、m、y:天数、点数、边数、改路代价。

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 110
#define M 1300
#define inf 0x3f3f3f3f
using namespace std;
struct Eli
{int v,len,next;
}e[M];
int head[N],cnt;
inline void add(int u,int v,int len)
{e[++cnt].v=v;e[cnt].len=len;e[cnt].next=head[u];head[u]=cnt;
}bool Dida[N],in[N];
int dist[N];
queue<int>q;
inline void spfa()
{memset(dist,0x3f,sizeof dist);int i,u,v;q.push(1),dist[1]=0;while(!q.empty()){u=q.front(),in[u]=0,q.pop();for(i=head[u];i;i=e[i].next){v=e[i].v;if(Dida[v])continue;if(dist[v]>dist[u]+e[i].len){dist[v]=dist[u]+e[i].len;if(!in[v])q.push(v),in[v]=1;}}}return ;
}int n,m,p,y;
bool dida[N][N];int f[N][N],g[N];int main()
{freopen("test.in","r",stdin);int i,j,k;int a,b,c;scanf("%d%d%d%d",&p,&n,&y,&m);while(m--){scanf("%d%d%d",&a,&b,&c);add(a,b,c),add(b,a,c);}scanf("%d",&m);while(m--){scanf("%d%d%d",&a,&b,&c);for(i=b;i<=c;i++)dida[a][i]=1;}for(i=1;i<=p;i++){memset(Dida,0,sizeof Dida);for(j=i;j<=p;j++){for(k=1;k<=n;k++)Dida[k]|=dida[k][j];spfa();f[i][j]=dist[n];}}for(i=1;i<=p;i++)g[i]=(f[1][i]<inf)?(f[1][i]*i):inf;for(i=1;i<=p;i++)for(j=0;j<i;j++)if(f[j+1][i]<inf)g[i]=min(g[i],g[j]+f[j+1][i]*(i-j)+y);printf("%d\n",g[p]);return 0;
}

【BZOJ1003】【ZJOI2006】物流运输trans 最短路预处理+动态规划相关推荐

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

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

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

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

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

  4. BZOJ1003: [ZJOI2006]物流运输

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

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

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

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

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

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

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

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

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

  9. [bzoj1003]物流运输trans

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

最新文章

  1. php跳转方式带rere_PHP翻页跳转功能实现方法
  2. 消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?大量消息持续积压几个小时,怎么办?...
  3. mac安装完python怎么打开-MAC中怎么安装python
  4. 2018-2019-2 《网络对抗技术》Exp2 后门原理与应用 20165211
  5. SQL Server 2005学习笔记
  6. SAP Spartacus里product数据请求的HTTP url是在哪里维护的
  7. java多表查询返回数据_spring data jpa如何在多张数据库表中查询返回某些字段值?...
  8. linux C 基于链表链的定时器
  9. [css] 举例说明实现圆角的方式有哪些?
  10. 计算机应用培训课程安排表,计算机培训教学计划
  11. android应用热修复与插件化实践之路
  12. lsblk命令 – 查看系统的磁盘
  13. 垂直的SeekBar:VerticalSeekBar
  14. 设置模糊阴影_制作带模糊效果的PPT首页
  15. 微信朋友圈的测试用例
  16. MATLAB数值计算——矩阵运算乘法、除法、乘方
  17. 新手看Mockplus
  18. Cortex-M核心寄存器
  19. CentOS 6.8 Local time zone must be set--see zic manual page
  20. CAST 和 CONVERT

热门文章

  1. 前端开发网页设计(一) :HTML学习
  2. dw如何运行.php文件,dw怎么运行php程序?
  3. Nginx高阶用法(二)
  4. win10安装mysql5.7.11_64位Win10系统安装Mysql5.7.11
  5. 闪电网络当前的主要局限,Part-1
  6. 细化数据集中存储管理,群晖NAS打造企业级全能解决方案
  7. 死磕前端架构之整洁架构在前端的应用实践【稀缺资源】
  8. CODESYS读取csv文件的方法(非excel)
  9. LaTeX之音标符号输入
  10. 2019秒下款的口子(12月)