【动态规划】【spfa】【最短路】bzoj1003 [ZJOI2006]物流运输trans
预处理cost[a][b] 表示第a天到第b天用同一条线路的成本。
具体转移看代码。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
#define N 21
typedef long long ll;
#define M 401
int n,m,K,day;
int v[M<<1],first[N],next[M<<1],w[M<<1],en,cost[101][101],f[101];
bool cant[N][101][101];
void AddEdge(int U,int V,int W)
{
v[++en]=V;
w[en]=W;
next[en]=first[U];
first[U]=en;
}
queue<int>q;
bool inq[N];
int dis[N];
void spfa(int from,int to)
{
memset(inq+1,0,sizeof(bool)*n);
memset(dis+1,0x7f,sizeof(int)*n);
q.push(1); inq[1]=1; dis[1]=0;
while(!q.empty())
{
int U=q.front();
for(int i=first[U];i;i=next[i])
if((!cant[v[i]][from][to])&&(ll)dis[v[i]]>(ll)dis[U]+(ll)w[i])
{
dis[v[i]]=dis[U]+w[i];
if(!inq[v[i]])
{
q.push(v[i]);
inq[v[i]]=1;
}
}
q.pop(); inq[U]=0;
}
}
int main()
{
int x,y,z,P;
scanf("%d%d%d%d",&day,&n,&K,&m);
for(int i=1;i<=m;++i)
{
scanf("%d%d%d",&x,&y,&z);
AddEdge(x,y,z);
AddEdge(y,x,z);
}
scanf("%d",&P);
for(;P;--P)
{
scanf("%d%d%d",&x,&y,&z);
for(int i=1;i<=z;++i)
for(int j=max(y,i);j<=day;++j)
cant[x][i][j]=1;
}
for(int i=1;i<=day;++i)
for(int j=i;j<=day;++j)
{
spfa(i,j);
cost[i][j]=dis[n]*(dis[n]>2000000000?1:(j-i+1));
}
memset(f+1,0x7f,sizeof(int)*day);
for(int i=0;i<=day;++i)
for(int j=i+1;j<=day;++j)
f[j]=(int)min((ll)f[j],(ll)f[i]+(ll)(i==0?0:K)+(ll)cost[i+1][j]);
printf("%d\n",f[day]);
return 0;
}
【动态规划】【spfa】【最短路】bzoj1003 [ZJOI2006]物流运输trans的更多相关文章
- bzoj1003[ZJOI2006]物流运输trans
1003: [ZJOI2006]物流运输trans Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常 ...
- BZOJ1003: [ZJOI2006] 物流运输 trans
物流运输--看了神犇的题解,就是dp+最短路,设f[i]为1~i天的最少花费,那么 dp[i]=min(cost[1,i],min{dp[j]+cost[j+1,i]+K,1≤j<i}) 就是从 ...
- [BZOJ1003] [ZJOI2006] 物流运输trans (最短路 & dp)
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- BZOJ 1003: [ZJOI2006]物流运输trans(最短路+dp)
1A,爽! cost[i][j]表示从第i天到第j天不改路线所需的最小花费,这个可以用最短路预处理出.然后dp(i)=cost[j][i]+dp(j-1)+c. c为该路线的花费. --------- ...
- BZOJP1003 [ZJOI2006]物流运输trans
BZOJP1003 [ZJOI2006]物流运输trans 1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MB Sub ...
- BZOJ 1003 [ZJOI2006]物流运输trans
1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4242 Solved: 1765[Submit] ...
- bzoj1003: [ZJOI2006]物流运输(DP+spfa)
1003: [ZJOI2006]物流运输 题目:传送门 题解: 可以用spfa处理出第i天到第j都走这条路的花费,记录为cost f[i]表示前i天的最小花费:f[i]=min(f[i],f[j-1] ...
- bzoj1003 [ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6300 Solved: 2597[Submit][Stat ...
- [bzoj1003][ZJOI2006][物流运输] (最短路+dp)
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
随机推荐
- Avito Cool Challenge 2018 A. B题解
A. Definite Game 题目链接:https://codeforces.com/contest/1081/problem/A 题意: 给出一个数v,然后让你可以重复多次减去一个数d,满足v% ...
- 异常message:There is no database named cloudera_manager_metastore_canary_test_db_hive_hivemetastore
NoSuchObjectException(message:There is no database named cloudera_manager_metastore_canary_test_db_h ...
- 根据select创建input并赋值
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- jspersonft有关Table数据绑定(一)
一:前言 在公司来就学着做报表,觉得这个报表学着还是很有意义的.jspersonft我在网上搜了一些有关的资料但是不是很多,现在就是学一点就记载一点.好记性不如烂笔头嘛! 二:在jspersonft定 ...
- kafka+flume+HDFS日志采集项目框架
1,项目图如下: 2, 实现过程 启动HDFS: sbin/start-dfs.sh 启动zookeeper(三台): bin/zkServer.sh start 启动kafka(三台): root@ ...
- UOJ#80 二分图最大权匹配 [模板题]
从前一个和谐的班级,有 nlnl 个是男生,有 nrnr 个是女生.编号分别为 1,…,nl1,…,nl 和 1,…,nr1,…,nr. 有若干个这样的条件:第 vv 个男生和第 uu 个女生愿意结为 ...
- 【BZOJ】1579: [Usaco2009 Feb]Revamping Trails 道路升级
[算法]分层图最短路 [题解] 考虑k层一模一样的图,然后每个夹层都在每条边的位置新加从上一层跨越到下一层的边权为0的边,这样至多选择k条边置为0. 然后考虑方便的写法. SPFA 第一次SPFA计算 ...
- wiki1285
2013-09-21 16:50 裸 //By BLADEVIL var n :longint; i :longint; x, y :longint; t, tot :longint; key, s, ...
- equestAnimationFrame
export const requestAnimationFrame = (() => { /* istanbul ignore next */ if (!inBrowser) { return ...
- 转:js中javascript:void(0) 真正含义
from:http://www.jb51.net/article/71532.htm 在Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. 我想使用过ajax的都常 ...