BZOJ 1003 [ZJOI2006]物流运输trans SPFA+DP
题意:链接
方法:SPFA+DP
解析:挺好的题目。因为数据范围较小所以用这样的方式能够搞,只是也是挺不好想的。
我们定义cost(i,j)表示从第i天走到第j天运用同一种方式的最小花费,然后因为数据比較小,我们定义f[i]表示前i天的最小花费。
接下来我们就能够写出来转移方程了
f[i]=minf[i],f[j]+K+cost(j+1,i)
j比i小。
然后就能够水过了!
顺带提一下,在计算cost(j+1,i)时,要考虑每一个限制区段的预处理,也就是哪些点在这些天中均可走。
代码:
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 110
#define M 10100
#define INF 0x3f3f3f3f
using namespace std;
int n,m,K,e,d,cnt;
int v[N],can[N],f[N];
struct node
{
int to;
int next;
int val;
}edge[M];
int head[N],dis[N];
struct limit
{
int p,a,b;
}l[M];
//f[i]=max(c(1,i),f[j]+k+c(j+1,i));
void init()
{
memset(head,-1,sizeof(head));
cnt=1;
}
void edgeadd(int from,int to,int val)
{
edge[cnt].to=to;
edge[cnt].val=val;
edge[cnt].next=head[from];
head[from]=cnt++;
}
int cost(int le,int ri)
{
memset(can,0,sizeof(can));
for(int i=1;i<=d;i++)
{
if(max(le,l[i].a)<=min(ri,l[i].b))can[l[i].p]=1;
}
memset(dis,0x3f,sizeof(dis));
memset(v,0,sizeof(v));
queue<int>q;
q.push(1);
v[1]=1;
dis[1]=0;
while(!q.empty())
{
int u=q.front();
q.pop();
v[u]=0;
for(int i=head[u];i!=-1;i=edge[i].next)
{
int to=edge[i].to;
if(can[to])continue;
if(dis[u]+edge[i].val<dis[to])
{
dis[to]=dis[u]+edge[i].val;
if(!v[to])
{
q.push(to);
v[to]=1;
}
}
}
}
if(dis[m]==INF)return INF;
return dis[m]*(ri-le+1);
}
int main()
{
init();
scanf("%d%d%d%d",&n,&m,&K,&e);
for(int i=1;i<=e;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
edgeadd(x,y,z);
edgeadd(y,x,z);
}
scanf("%d",&d);
for(int i=1;i<=d;i++)scanf("%d%d%d",&l[i].p,&l[i].a,&l[i].b);
for(int i=1;i<=n;i++)
{
f[i]=cost(1,i);
for(int j=1;j<i;j++)
{
f[i]=min(f[i],f[j]+K+cost(j+1,i));
}
}
printf("%d\n",f[n]);
}
BZOJ 1003 [ZJOI2006]物流运输trans SPFA+DP的更多相关文章
- 【BZOJ1003】1003: [ZJOI2006]物流运输trans SPFA+DP
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- BZOJ 1003: [ZJOI2006]物流运输(spfa+dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1003 题意: 思路: 首先用spfa计算一下任意两天之内的最短路,dis[a][b]表示的就是在第a ...
- BZOJ 1003 [ZJOI2006]物流运输trans ★(Dijkstra + DP)
题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=1003 思路 先Dijkstra暴力求出i..j天内不变换路线的最少花费,然后dp[i] = ...
- bzoj 1003: [ZJOI2006]物流运输【spfa+dp】
预处理出ans[i][j]为i到j时间的最短路,设f[i]为到i时间的最小代价,转移显然就是 f[i]=min(f[j-1]+ans[j][i]*(i-j+1)+k); #include<ios ...
- BZOJ 1003: [ZJOI2006]物流运输trans(最短路+dp)
1A,爽! cost[i][j]表示从第i天到第j天不改路线所需的最小花费,这个可以用最短路预处理出.然后dp(i)=cost[j][i]+dp(j-1)+c. c为该路线的花费. --------- ...
- BZOJ 1003 [ZJOI2006]物流运输trans
1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4242 Solved: 1765[Submit] ...
- BZOJ 1003: [ZJOI2006]物流运输trans DP+最短路
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- BZOJ 1003 ZJOI2006 物流运输trans 动态规划+SPFA
标题效果:给定一个无向图.输送n日,有一天的某一时刻不能去,更换行考虑k,求总成本 一阶cost[i][j]用于第一i为了天j天正在同一航线的最低消费 这种利用SPFA处理 然后就是移动的法规问题 订 ...
- BZOJ-1003 物流运输trans SPFA+DP
傻逼错误耗我1h,没给全范围坑我1A.... 1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MB Submit: 529 ...
随机推荐
- JavaScript系列----正则表达式
1.正则表达式 1.1.正则表达式的类型 正则表达式在JavaScript中,提供了一种内置的构造函数--RegExp. 正则表达式有三种匹配模式: g: 表示全局模式,即模式应用于所有的字符串,而非 ...
- riot.js教程【三】访问DOM元素、使用jquery、mount输入参数、riotjs标签的生命周期
前文回顾 riot.js教程[二]组件撰写准则.预处理器.标签样式和装配方法 riot.js教程[一]简介 访问DOM元素 你可以通过this.refs对象访问dom元素 而且还有大量的属性简写方式可 ...
- java 整型数组基本排序,冒泡,快速选择,插入,归并
在学java泛型,于是把排序拿来练练手了 import java.util.Arrays; public class GenericArraySort { public static void mai ...
- ContextLoaderListener - 运行原理
基本概念: servletContext:http://blog.csdn.net/yjw757174266/article/details/45072975 1. 使用ContextLoaderL ...
- vue+node+webpack搭建环境
一.环境搭建 1.1.去官网安装node.js( http://www.runoob.com/nodejs/nodejs-install-setup.html ) 注意node的版本,只有支持和谐模 ...
- Entity Framework Core 使用HiLo生成主键
#cnblogs_post_body.cnblogs-markdown p img { max-width: 95%; } HiLo是在NHiernate中生成主键的一种方式,不过现在我们可以在Ent ...
- java虚拟机概述
java 虚拟机是什么? java虚拟机是一个将字节码指令映射为对应物理操作系统指令的程序. java程序的运行需要事先安装 jdk,而在jdk内部的jre中其核心就是 jvm ...
- win7下使用apache ab 比较测试node与 tomcat
最近在研究node,都说node单线程.事件环机制,高并发效率高,亲测一下,一探究竟 apache ab 安装 进入:http://httpd.apache.org/download.cgi#apac ...
- Python爬虫利器:Beautiful Soup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.使用它来处理HTML页面就像JavaScript代码操作HTML DOM树一样方便.官方中文文档地址 1. 安 ...
- buttongroup中content一次性加载的解决方法
buttongroup一次性加载所有内容的解决方法 如下图所示: 第一步: 设置windowcontainer的autoLoad属性为false(默认情况下autoLoad属性为true,所以会加载所 ...