BZOJ_1003_[ZJOI2006]物流运输_最短路+dp

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

分析:

这种一段一段的显然要用dp求。

f[i]表示到第i天为止的最小花销。转移有f[i]=min{f[j-1]+cost[j][i]*(i-j+1)+k};

其中cost[i][j]表示从i到j天的最短路长度,spfa预处理出来。

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int head[30],to[1000],nxt[1000],val[1000],cnt;
int n,m,k,t,inb[110][30],f[110],cost[110][110],can[30];
int Q[100],l,r,dis[30],inq[30];
inline void add(int u,int v,int w){
to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;val[cnt]=w;
}
int spfa(int be,int en){
for(int i=1;i<=n;i++)can[i]=0;
for(int i=be;i<=en;i++)
for(int j=1;j<=n;j++)if(inb[i][j])
can[j]=1;
l=r=0;
memset(dis,0x3f,sizeof(dis));
dis[1]=0;Q[r++]=1;inq[1]=1;
while(l^r){
int x=Q[l++];if(l==n+10)l=0;inq[x]=0;
for(int i=head[x];i;i=nxt[i]){
if(can[to[i]])continue;
if(dis[to[i]]>dis[x]+val[i]){
dis[to[i]]=dis[x]+val[i];
if(!inq[to[i]]){
inq[to[i]]=1;Q[r++]=to[i];if(r==n+10)r=0;
}
}
}
}
return dis[n]>100000?-1:dis[n];
}
int main(){
scanf("%d%d%d%d",&t,&n,&k,&m);
int x,y,z;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add(y,x,z);
}
int h;
scanf("%d",&h);
for(int i=1;i<=h;i++){
scanf("%d%d%d",&x,&y,&z);
if(y>z)swap(y,z);
for(int j=y;j<=z;j++)inb[j][x]=1;
}
for(int i=1;i<=t;i++){
for(int j=i;j<=t;j++){
cost[i][j]=spfa(i,j);
//printf("%d\n",cost[i][j]);
}
}
f[0]=0;
for(int i=1;i<=t;i++){
f[i]=1<<30;
for(int j=1;j<=i;j++){
if(cost[j][i]==-1)continue;
f[i]=min(f[j-1]+cost[j][i]*(i-j+1)+k,f[i]);
}
//printf("%d\n",f[i]);
}
printf("%d",f[t]-k);
}

BZOJ_1003_[ZJOI2006]物流运输_最短路+dp的更多相关文章

  1. BZOJ 1003: [ZJOI2006]物流运输trans(最短路+dp)

    1A,爽! cost[i][j]表示从第i天到第j天不改路线所需的最小花费,这个可以用最短路预处理出.然后dp(i)=cost[j][i]+dp(j-1)+c. c为该路线的花费. --------- ...

  2. bzoj 1003 [ZJOI2006]物流运输(最短路+dp)

    [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 8973  Solved: 3839[Submit][Status][Di ...

  3. [BZOJ1003] [ZJOI2006] 物流运输trans (最短路 & dp)

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

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

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

  5. B1003 物流运输(最短路 + dp)

    这个dp其实不是那么难,状态其实很好想,但是细节有少许偏差. 当时我并没有想到最短路要在dp之外写,后来看题解之后发现要预处理出来每段时间1~M的最短路,然后直接dp. 题目: Description ...

  6. 【洛谷 P1772】 [ZJOI2006]物流运输(Spfa,dp)

    题目链接 \(g[i][j]\)表示不走在\(i\text{~}j\)时间段中会关闭的港口(哪怕只关\(1\)天)从\(1\)到\(m\)的最短路. \(f[i]\)表示前\(i\)天的最小花费.于是 ...

  7. 【luogu】P1772物流运输(最短路+DP)

    题目链接 对于本题我们设ext[i][j]计算第i个码头在前j天总共有几天不能用(其实就一前缀和),设dis[i][j]是从第i天到第j天不变运输路线的最短路径,设f[i]是前i天运输货物的最小花费. ...

  8. BZOJ_1003_[ZJOI2006]_物流运输_(动态规划+最短路)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1003 m个码头,从1运货到m,n天每天运,其中有一些码头在特定的天里不能使用.运货的代价:在两 ...

  9. [luogu] P1772 [ZJOI2006]物流运输(动态规划,最短路)

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

随机推荐

  1. Android平台的Swift—Kotlin

    WeTest 导读 Kotlin 已经出来较长一段时间了,有些同学已经对Kotlin进行了深入的学习,甚至已经运用到了自己的项目当中,但是还有较多同学可能只是听过Kotlin或简单了解过,这篇文章的目 ...

  2. 前端iFrame跨域问题

    一.父域访问子域的元素 项目需求: iFrame是个聊天窗口,要求聊天窗口中点击图片图标,在父域将内容展示出来. 解决方法:(jQuery) 首先/要等iFrame加载完再执行函数!(代码如下) va ...

  3. letter combinations of a phone number(回溯)

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  4. 《深入理解Java虚拟机》读书笔记3--垃圾回收算法

    转载:http://blog.csdn.net/tjiyu/article/details/53983064 下面先来了解Java虚拟机垃圾回收的几种常见算法:标记-清除算法.复制算法.标记-整理算法 ...

  5. javaScript(7)---函数

    学习要点: 1.函数声明 2.return返回值 3.arguments对象 函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值的局部变量.函数常常使用这 ...

  6. Pod install 之后 no such module

    官方文档在pod install之后的操作是: open App.xcworkspace 使用pod以后,项目的旧打开方式就不行了,必须到项目目录里面,打开“项目名.xcworkspace”这种方式来 ...

  7. Github Page 绑定域名

    http://kyle.xlau.org/posts/github-cname.html CNAME 创建一个CNAME文件,内容是你的域名,如: xlau.org 然后把此文件添加到Github仓库 ...

  8. 使用 Babylon.js 在 HTML 页面加载 3D 对象

    五一 Windwos Blogs 推了一篇博客, Babylon.js v3.2 发布了.因为一直有想要在自己博客上加载 3D 对象的冲动,这两天正好看到了,就动手研究研究.本人之前也并没有接触过 W ...

  9. day11_jsp/EL/JSTL学习笔记

    一.jsp概述 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP实际上就是Servlet. JSP这门技术的最大 ...

  10. python爬虫入门(二)Opener和Requests

    Handler和Opener Handler处理器和自定义Opener opener是urllib2.OpenerDirector的实例,我们之前一直在使用urlopen,它是一个特殊的opener( ...