[ZJOI2006]物流运输 最短路 动态规划
Code:
定义状态 $dp[i]$ 为前 $i$ 天的最小代价。
状态转移为:$dp[i]=min(dp[i],dp[j]+spfa(j+1,i)$ 这里 $spfa(i,j)$ 是指 $(i,j)$ 天中用一种最短路方案的最短路(最小花费)
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<deque>
using namespace std;
void setIO(string a){
freopen((a+".in").c_str(),"r",stdin);
}
const int maxn=30;
const int inf=10000000;
int n,m;
int tag[maxn],head[maxn], to[1000000], nex[1000000],val[1000000],edges;
int a[maxn][200];
long long dp[200];
void add_edge(int u,int v,int c){
nex[++edges]=head[u], head[u]=edges, to[edges]=v, val[edges]=c;
}
deque<int>Q;
bool inq[100000];
int d[maxn];
int spfa(int l,int r){
Q.clear();
for(int i=0;i<maxn;++i) d[i]=inf;
memset(tag,0,sizeof(tag));
memset(inq,false,sizeof(inq));
for(int i=1;i<=m;++i)
for(int j=l;j<=r;++j)
if(a[i][j]) tag[i]=1;
Q.push_back(1);
d[1]=0,inq[1]=true; while(!Q.empty()){
int u=Q.front();
Q.pop_front();
inq[u]=false;
for(int v=head[u];v;v=nex[v]){
if(tag[to[v]]) continue;
if(d[u]+val[v] < d[to[v]]){
d[to[v]]=d[u]+val[v];
if(!inq[to[v]]){
if(Q.empty()||d[to[v]]<=d[Q.front()]) Q.push_front(to[v]);
else Q.push_back(to[v]);
inq[to[v]]=true;
}
}
}
}
return d[m];
}
void update(long long &a,long long b){
if(b<a)a=b;
}
int main(){
//setIO("input");
int k,e;
scanf("%d%d%d%d",&n,&m,&k,&e);
for(int i=1;i<=e;++i){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
add_edge(a,b,c);
add_edge(b,a,c);
} int cnt;
scanf("%d",&cnt);//
for(int i=1;i<=cnt;++i){
int p,l,r;
scanf("%d%d%d",&p,&l,&r);
for(int j=l;j<=r;++j) a[p][j]=1;
}
for(int i=1;i<=n;++i)
{
dp[i]=spfa(1,i)*i;
for(int j=1;j<i;++j)
update(dp[i],dp[j]+(long long)spfa(j+1,i)*(i-j)+k);
}
printf("%lld\n",dp[n]);
return 0;
}
[ZJOI2006]物流运输 最短路 动态规划的更多相关文章
- [bzoj1003][ZJOI2006][物流运输] (最短路+dp)
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- [luogu1772 ZJOI2006] 物流运输 (最短路 线性dp)
题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪. ...
- 1003: [ZJOI2006]物流运输 最短路+dp
https://www.lydsy.com/JudgeOnline/problem.php?id=1003 数据范围很小,怎么瞎搞都行,n方dp,然后跑出最短路暴力转移,需要注意的是不能使用的可能有多 ...
- P1772 [ZJOI2006]物流运输 最短路+DP
思路:最短路+DP 提交:1次 题解: $f[i]$表示到第$i$天的最小代价,我们可以预先处理出$i,j$两天之间(包括$i,j$)都可通行的最短路的代价记做$s[i][j]$,然后有$f[i]=m ...
- [luogu] P1772 [ZJOI2006]物流运输(动态规划,最短路)
P1772 [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线 ...
- [ZJOI2006]物流运输(动态规划,最短路)
[ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个 ...
- BZOJ 1003: [ZJOI2006]物流运输trans(最短路+dp)
1A,爽! cost[i][j]表示从第i天到第j天不改路线所需的最小花费,这个可以用最短路预处理出.然后dp(i)=cost[j][i]+dp(j-1)+c. c为该路线的花费. --------- ...
- BZOJ_1003_[ZJOI2006]物流运输_最短路+dp
BZOJ_1003_[ZJOI2006]物流运输_最短路+dp 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1003 分析: 这种一段一段的显 ...
- bzoj 1003 [ZJOI2006]物流运输(最短路+dp)
[ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 8973 Solved: 3839[Submit][Status][Di ...
随机推荐
- Pyhton学习——Day37
# HTML# import socket## def main():# sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# sock. ...
- Facebook 运维内幕曝光:一人管理2万台服务器
Facebook 运维内幕曝光:一人管理2万台服务器 oschina 发布于: 2013年11月23日 (29评) 分享到 新浪微博腾讯微博 收藏+32 11月30日 珠海 源创会,送U盘,先到先得 ...
- bootstrap fileinput控件 + django后台上传、回显简单使用
一.控件下载:https://github.com/kartik-v/bootstrap-fileinput/ 官网:http://plugins.krajee.com/file-input 需要引入 ...
- NOI 2015 品酒大会 (后缀数组+并查集)
题目大意:略 40分暴力还是很好写的,差分再跑个后缀和 和 后缀最大值就行了 一种正解是后缀数组+并查集 但据说还有后缀数组+单调栈的高端操作蒟蒻的我当然不会 后缀数组求出height,然后从大到小排 ...
- CF895C Square Subsets (组合数+状压DP+简单数论)
题目大意:给你一个序列,你可以在序列中任选一个子序列,求子序列每一项的积是一个平方数的方案数. 1<=a[i]<=70 因为任何一个大于2的数都可以表示成几个质数的幂的乘积 所以我们预处理 ...
- [NOIPlus]斗地主
毫无意义的一道题. 用pai[i]表示某种点数的牌的剩余量,used[i]表示单,对,三,四的出牌数,大力分类讨论,大力dfs即可...真奇葩... #include <iostream> ...
- 移动端优先的flex三栏布局
默认情况下先显示移动端,通过 @media 属性适配屏幕变化 使用flexbox相关的CSS属性 display: flex; (父元素) flex-wrap: nowrap | wrap | wra ...
- Maven系列--web.xml 配置详解
一 .web.xml介绍 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 紧接着,容 ...
- spring-boot-maven-plugin 插件的作用(转)
OM 文件中添加了“org.springframework.boot:spring-boot-maven-plugin”插件.在添加了该插件之后,当运行“mvn package”进行打包时,会打包成一 ...
- 日志工具全面理解及配置应用---以Log4j例子
一.日志系统基本常识 1.日志系统作用:将日志信息输出到控制台和文本文件,以追踪代码运行信息. 2.日志系统操作的是什么?日志系统打印信息,也是调用日志系统的log.Info(),log.Warn() ...