题目描述


https://ac.nowcoder.com/acm/contest/20601/B
RT

输入样例:
5 5 10 8
1 2 1
1 3 3
1 4 2
2 3 2
2 4 4
3 4 1
3 5 2
4 5 2
4
2 2 3
3 1 1
3 3 3
4 4 5
输出样例:
32

最短路预处理+简单DP

刚拿到这道题的时候,嗯,离散的条件下的最小值,想到了动态规划;
一开始想有可能是状态压缩,因为(1<<18)*100并没有爆内存,后来想想有更简单的方法

就是从集合的角度考虑,f[i]表示前i天最小成本,那么对于之前的状态可以根据上一次换航线来划分j=0,1…i-1,即在j处换了航线

因此我们可以得到状态转移方程:
f [ i ] = m i n ( f [ i ] , f [ j ] + c o s t [ j + 1 ] [ i ] ∗ ( i − j ) + K ) f[i]=min( f[i],f[j]+cost[j+1][i]*(i-j)+K ) f[i]=min(f[i],f[j]+cost[j+1][i]∗(i−j)+K)
0 ≤ j ≤ i − 1 0 \le j \le i-1 0≤j≤i−1
其中,cost(j,i)表示从第j天开始到第i天沿着某一路径走不换路径的最短路径,这个可以通过预处理得到。

预处理的方式有很多,由于数据比较小,可以枚举每个点在当前时间段是否有被禁止同行,有的话标记一下在spfa找最短路时直接continue即可

注意建图的数组开的大一点,我一开始开小了T了几发才找到这个原因

时间复杂度

O ( n 2 ⋅ k E ) ( 在 s p f a 最 优 情 况 下 O(n^2\cdot kE) (在spfa最优情况下 O(n2⋅kE)(在spfa最优情况下

C++ 代码

#include<bits/stdc++.h>
using namespace std;
#define N 110
#define M 21
#define MAXN 10010#define int long long
#define x first
#define y secondtypedef pair<int,int> pii;int n,m,k,t,d;
int e[MAXN],ne[MAXN],w[MAXN],h[M],idx=0;
bool unvis[M],st[M];
int record[M][N]; //记录第i个点第j天是否可以走
int cost[N][N],f[N],dist[M]; //cost[i][j]表示从第i天到第j天一直走一条路的最小花费void add(int a,int b,int v){e[idx]=b,w[idx]=v;ne[idx]=h[a],h[a]=idx++;
}int spfa(){for(int i=1;i<=m;i++) dist[i]=1e12,st[i]=0;dist[1]=0;queue<int> Q;Q.push(1);st[1]=true;while(Q.size()){int t=Q.front();Q.pop();st[t]=false;for(int i=h[t];~i;i=ne[i]){int j=e[i];if(unvis[j]) continue;if(dist[j]>dist[t]+w[i]){dist[j]=dist[t]+w[i];if(!st[j]){ Q.push(j); st[j]=true;}}}}return dist[m];
}signed main(){memset(h,-1,sizeof h);scanf("%lld%lld%lld%lld",&n,&m,&k,&t);while(t--){int a,b,v;scanf("%lld%lld%lld",&a,&b,&v);add(a,b,v),add(b,a,v);}scanf("%lld",&d);while(d--){int a,s,t;scanf("%lld%lld%lld",&a,&s,&t);for(int i=s;i<=t;i++)record[a][i]=1;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){memset(unvis,0,sizeof unvis);//将从第i天到第j天的所有凡是有封锁的点都打上标记,等会儿跑spfafor(int p=2;p<=m-1;p++)for(int s=i;s<=j;s++)if(record[p][s])unvis[p]=1;cost[i][j]=spfa();}}memset(f,0x3f,sizeof f);f[0]=-k;for(int i=1;i<=n;i++){for(int j=0;j<i;j++)f[i]=min(f[i],f[j]+cost[j+1][i]*(i-j)+k);}printf("%lld\n",f[n]);return 0;
}

[ZJOI] 物流运输相关推荐

  1. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  2. 订单信息修改java模型图,java毕业设计_springboot框架的物流运输管理系统订单管理...

    这是一个基于java的毕业设计项目,毕设课题为springboot框架的物流运输管理系统订单管理, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架js ...

  3. BZOJ1003: [ZJOI2006]物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 8800  Solved: 3747 [Submit][St ...

  4. BZOJ 1003: [ZJOI2006]物流运输trans

    二次联通门 : BZOJ 1003: [ZJOI2006]物流运输trans /*BZOJ 1003: [ZJOI2006]物流运输transSpfa + DpSpfa预处理出i到j天的最小花费然后N ...

  5. 物流运输系统设计浅谈

    本文为PMCAFF专栏作者 钟翼翔 于社区发布 随着物流行业的快速发展,作为支撑物流数字化管理.信息化运作的各类系统平台也正层出叠见.运输作为物流作业中费用占比最高的环节之一,其系统竞争也格外激烈,这 ...

  6. 【BZOJ1003】物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 8273  Solved: 3481 [Submit][St ...

  7. 自适应HTML5宽屏物流运输快递货运类网站源码 pbootcms模板

    介绍: PbootCMS内核开发的网站模板,该模板适用于物流运输网站.快递货运网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可:自适应,同一个后台,数据即时同步,简单适用!附带测试 ...

  8. TMS物流运输管理系统、智慧物流、智能运输、运单管理、预开单、补录运单、提货管理、库存管理、签收管理、短驳管理、车辆配载、送货管理、回单管理、退货管理、中转管理、承运商、路由、车线、司机、油卡、车辆

    TMS物流运输管理系统.智慧物流.智能运输.运单管理.预开单.补录运单.提货管理.库存管理.签收管理.短驳管理.车辆配载.送货管理.回单管理.退货管理.中转管理.承运商.路由.车线.司机.油卡.车辆, ...

  9. bzoj 1003: [ZJOI2006]物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 7819  Solved: 3273 [Submit][St ...

最新文章

  1. 词法分析(2)---NFA
  2. 北斗导航 | 多GNSS系统PPP-RTK原型系统及性能分析(2020 CPGPS全球华人导航定位协会年会)
  3. python基础(part7)--容器类型之列表
  4. always中的敏感变量
  5. Python基础教程 第六章 学习笔记
  6. 【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题
  7. Raider:Web身份认证测试框架
  8. 卸载symantec endpoint protection
  9. 机器学习之微积分零基础学习
  10. 关于多媒体编解码器和音视频格式
  11. 热敏打印机的工作原理
  12. 电容或电感的电压_阻碍电流流通的“双子星”,电容与电感
  13. 一般阈值,Otsu,自适应阈值
  14. Mac 系统下java端口占用
  15. surface pen未接触屏幕就有反应 解决办法
  16. 越吃越年轻的26种抗衰老食物
  17. 计算机python指什么_系统学习python-1.1什么是计算机
  18. [译] VINE:一种开源的神经进化(Neuroevolution)交互式数据可视化工具
  19. 【翻译】SECS GEM系列之十二:消息日志
  20. FPGA uart+sdram+vga传图

热门文章

  1. 仙剑奇侠传5保存文件的简单分析:让雨柔复活打最终BOSS吧
  2. SpringCloud Oauth2认证 基础版本
  3. [BZOJ4816][莫比乌斯反演]SDOI2017:数字表格
  4. 第一个ios应用(2)
  5. 千锋教育python2104期总结day13
  6. 如何调换手机桌面位置_苹果ios14怎么自定义图标 图标位置自由排列换风格教程...
  7. 数据库mysql的重要性_数据库的重要性体现在几个方面,简述数据库的作用及意义...
  8. 物流管理如何利用计算机思维,如何指导毕业计——物流管理专业经验分享.ppt...
  9. Unity 2D炸弹爆炸的效果制作
  10. 天振股份上市首日破发:市值蒸发约8亿元,方庆华夫妇为实控人