bzoj1003/luogu1772 物流运输 (dijkstra+dp)
先求出某一段时间[i,j]一直用同一个路径的最短路,乘上天数,记作cost[i,j]
那就可以设f[i]是前i天的最小代价,f[i]=f[j]+cost[j+1,i]+K
#include<bits/stdc++.h>
#define pa pair<int,int>
#define ll long long
using namespace std;
const int maxn=,maxm=; ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} struct Edge{
int a,b,l,ne;
}eg[maxm*maxm*];
int N,M,K,E,D,egh[maxm],ect;
int di[maxm][maxn],dis[maxm],mi[maxm],cost[maxn][maxn];
int f[maxn];
bool can[maxm][maxn],used[maxm],flag[maxm]; inline void adeg(int a,int b,int l){
eg[++ect].a=a;eg[ect].b=b;eg[ect].l=l;eg[ect].ne=egh[a];egh[a]=ect;
} inline int dijkstra(){
priority_queue<pa,vector<pa>,greater<pa> > q;while(!q.empty()) q.pop();
memset(dis,,sizeof(dis));memset(flag,,sizeof(flag));
dis[]=;q.push(make_pair(,));
while(!q.empty()){
int p=q.top().second;q.pop();if(flag[p]||!used[p]) continue;
if(p==M) break;
for(int i=egh[p];i!=-;i=eg[i].ne){
int b=eg[i].b;
if(dis[b]>dis[p]+eg[i].l){
dis[b]=dis[p]+eg[i].l;
q.push(make_pair(dis[b],b));
}
}flag[p]=;
}return dis[M];
} inline void pre(){
for(int i=;i<=N;i++){
memset(mi,,sizeof(mi));
for(int j=i;j<=N;j++){memset(used,,sizeof(used));
used[]=used[M]=;
for(int k=;k<M;k++){
mi[k]=min(mi[k],(int)can[k][j]);
if(mi[k]) used[k]=;
}int re=dijkstra();
cost[i][j]=(re>=0x3f3f3f3f)?-:re*(j-i+);
//printf("%d %d %d\n",i,j,cost[i][j]);
}
}
} int main(){
int i,j,k;
N=rd(),M=rd(),K=rd(),E=rd();
memset(egh,-,sizeof(egh));
for(i=;i<=E;i++){
int a=rd(),b=rd(),c=rd();
adeg(a,b,c);adeg(b,a,c);
}D=rd();
for(i=;i<=D;i++){
int a=rd(),b=rd(),c=rd();
di[a][b]=;di[a][c+]=-;
}for(i=;i<=M;i++){
for(j=,k=;j<=N;j++){
k+=di[i][j];can[i][j]=k?:;
}
}pre();memset(f,,sizeof(f));f[]=-K;
for(i=;i<=N;i++){
for(j=;j<i;j++){
if(cost[j+][i]==-) continue;
f[i]=min(f[j]+cost[j+][i]+K,f[i]);
}//printf("%d %d\n",i,f[i]);
}printf("%d\n",f[N]);
return ;
}
bzoj1003/luogu1772 物流运输 (dijkstra+dp)的更多相关文章
- bzoj1003: [ZJOI2006]物流运输(DP+spfa)
1003: [ZJOI2006]物流运输 题目:传送门 题解: 可以用spfa处理出第i天到第j都走这条路的花费,记录为cost f[i]表示前i天的最小花费:f[i]=min(f[i],f[j-1] ...
- 2018.09.02 bzoj1003: [ZJOI2006]物流运输(dp+最短路转移)
传送门 dp好题. 每一天要变更路线一定还是走最短路. 所以l~r天不变更路线的最优方案就是把l~r天所有不能走的点都删掉再求最短路.显然是可以dp的. 设f[i]表示第i天的最优花销.那么我们枚举在 ...
- [Bzoj1003][ZJOI2006]物流运输(spfa+dp)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1003 比较简单的dp,dp[i]为1-i天最小费用,dp方程为dp[i] = min(d ...
- 【BZOJ1003】物流运输(动态规划,最短路)
[BZOJ1003]物流运输(动态规划,最短路) 题面 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司 ...
- bzoj1003 [ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6300 Solved: 2597[Submit][Stat ...
- 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}) 就是从 ...
- BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)
Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: ...
- [BZOJ1003] [ZJOI2006] 物流运输trans (最短路 & dp)
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
随机推荐
- [Oracle]数据库的Control File 取Dump后的样例
[Oracle]数据库的Control File 取Dump后的样例: 片段截取-------------------------------(size = 40, compat size = 40, ...
- Intel x86_64 Architecture Background 2
这里是在学习Intel x86_64体系架构时学习到的一些概念,记录下来以供日后参考.如果有错的地方,欢迎指正! CPU上下文切换(context switch): 这个概念第一次听到对我来说是完全陌 ...
- ML.NET 示例:二元分类之垃圾短信检测
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- Microsoft Visual Studio 2013安装及试用
我是在网上下载的vs2013版的安装包,下载的是压缩文件,解压后是2.86GB.安装包下载完成后我们就可以进入安装了. 同时建议最好在互联网连接的情况下安装. 打开下载好的文件,我们要选择.exe可执 ...
- SCRUM 12.21
从爬虫遇到的问题中我们学会了: 1.有的网站是有反爬虫机制的,外卖网站(我们猜测基本所有盈利性质的网站可能都是)全部都有. 2.我们对于反爬虫机制有了一定的了解. 本次爬虫测试中,我们最后连美团网 ...
- 【Beta版本发布】爬虫队长装备全面更新!
一.Beta阶段目标回顾 1.为了解决Alpha阶段线程异常泛滥的问题,我们需要一个线程池. 2.为了爬取得到的文件正确可用,我们需要一个异常清理器. 3.为了不间断爬取,管理员不必频繁运行程序点,我 ...
- Linux 第八周实验 进程的切换和系统的一般执行过程
姬梦馨 原创作品 <Linux内核分析>MOOC课程:http://mooc.study.163.com/course/USTC-1000029000 第八讲 进程的切换和系统的一般执行过 ...
- 结对项目 Pair Project
结对项目 Pair Project 一人编程,一人操作,共同检查. 源码 https://github.com/dpch16303/test/blob/master/%E5%AE%9E%E8%B7%B ...
- Practice5.1 测试与封装5.1
结对同伴: 姓名 学号 博客地址 叶子鹏 201306114420 http://www.cnblogs.com/kazehanaai/ 王佳宁 201306114434 http://www.cnb ...
- 关于hash冲突的解决
分离链接法:public class SeparateChainingHashTable<AnyType>{ private static final int DEFAULT_TABLE_ ...