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. Spring Boot Kafka

    1.创建集群 http://kafka.apache.org/documentation/#quickstart 有一句我觉得特别重要: For Kafka, a single broker is j ...

  2. minimun depth of binary tree

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  3. Java框架数据库连接池比较 [转贴 2010-3-20 9:57:51]

    现在常用的开源数据连接池主要有c3p0,dbcp和proxool三种,其中: ¨hibernate开发组推荐使用c3p0; ¨spring开发组推荐使用dbcp (dbcp连接池有weblogic连接 ...

  4. linux利用命令重置大量密码

     yum -y install expectmkpasswd -l 10 -v was | grep 'is *'  >> 123.txtmkpasswd -l 10 -v logv |  ...

  5. How To Install and Use Redis

    https://www.digitalocean.com/community/tutorials/how-to-install-and-use-Redis About Redis redis, dev ...

  6. Java永久代去哪儿了

    http://www.infoq.com/cn/articles/Java-PERMGEN-Removed 在Java虚拟机(以下简称JVM)中,类包含其对应的元数据,比如类的层级信息,方法数据和方法 ...

  7. View requires API level 14 (current min is 8): <GridLayout>

    在学习android的过程中,出现这个错误的是否,可以build clean解决

  8. 学习MySQL我们应该知道哪些东西?

    随笔:小编由于年前一直在找工作,而年后找到工作后又一直在忙工作,所以也很少有时间给大家写点什么,总的来说呢,回顾一下之前面试的几次经历,也曾小小的总结了一下自己的不足,发现自己虽然一直在原有的公司(外 ...

  9. 判断某个方法是否存在,解析php函数function_exists (),method_exists()与is_callable()的区别

    php函数function_exists (),method_exists() 与is_callable()的区别在哪? 先来讲下后两个:method_exists() 与is_callable(): ...

  10. 详解Trie

    一.Trie的概念 Trie又称字典树,前缀树(事实上前缀树这个名字就很好的解释了Trie的储存方式) 来一张图理解一下Trie的储存方式:(图片来自百度百科) 由这张图我们也可以知道Trie的特点: ...