传送门1
传送门2
思路:
一直跑最短路不一定是最优解
g[i][j]表示仅走i~j天可通过的码头的最短路
f[i]表示走到第i天的最短路
f[i]=min(f[j]+g[j+1][i]*(i-j)+k)
f[0]=-k
如何判断某一点x是否在第i~j天可通行
可以差分后做两次前缀和判断,详细看代码
代码:

#include<cstdio>
#include<queue>
#include<cstring>
#define LL long long
using namespace std;
int n,m,K,E,D,tot;
int g[102][102],f[102],dis[22],ok[22][102],first[22];
bool vis[22];
struct edge{int v,next,w;
}e[404];
queue<int>q;
int in()
{int t=0;char ch=getchar();while (ch>'9'||ch<'0') ch=getchar();while (ch>='0'&&ch<='9') t=(t<<1)+(t<<3)+ch-48,ch=getchar();return t;
}
void add(int z,int x,int y)
{e[++tot]=(edge){y,first[x],z};first[x]=tot;e[++tot]=(edge){x,first[y],z};first[y]=tot;
}
void spfa(int s,int t)
{memset(dis,63,sizeof(dis));q.push(1);dis[1]=0;for (int x;!q.empty();q.pop()){x=q.front();vis[x]=0;for (int i=first[x];i;i=e[i].next)if (dis[e[i].v]>dis[x]+e[i].w&&ok[e[i].v][t]-ok[e[i].v][s-1]==0){dis[e[i].v]=dis[x]+e[i].w;if (!vis[e[i].v]) vis[e[i].v]=1,q.push(e[i].v);}}g[s][t]=dis[m];
}
main()
{n=in();m=in();K=in();E=in();for (int i=1;i<=E;++i) add(in(),in(),in());D=in();int x;for (int i=1;i<=D;++i)x=in(),ok[x][in()]++,ok[x][in()+1]--;for (int i=1;i<=m;++i)for (int j=1;j<=n;++j)ok[i][j]+=ok[i][j-1];for (int i=1;i<=m;++i)for (int j=1;j<=n;++j)ok[i][j]+=ok[i][j-1];for (int i=1;i<=n;++i)for (int j=i;j<=n;++j) spfa(i,j);memset(f,63,sizeof(f));f[0]=-K;for (int i=1;i<=n;++i)for (int j=0;j<i;++j)f[i]=min((LL)f[i],f[j]+(LL)g[j+1][i]*(i-j)+K);printf("%d\n",f[n]);
}

【BZOJ1003】【codevs1655】物流运输,最短路+DP相关推荐

  1. bzoj1003 [ZJOI2006]物流运输(最短路+dp)

    Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转 停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严 ...

  2. 【bzoj1003】[ZJOI2006]物流运输 最短路+dp

    传送门:嘿原题在这 题意:给出一个图,求1-m的最短路,但其中有些点在某些时间段会不能用,题目保证有解. 我们可以很(不)容易的看出递推关系式dp[i]=min(dp[i],dp[j]+cost[j+ ...

  3. P1772 [ZJOI2006]物流运输 最短路+DP

    思路:最短路+DP 提交:1次 题解: $f[i]$表示到第$i$天的最小代价,我们可以预先处理出$i,j$两天之间(包括$i,j$)都可通行的最短路的代价记做$s[i][j]$,然后有$f[i]=m ...

  4. BZOJ 1003 物流运输 最短路+dp

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1003 题目大意: 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才 ...

  5. BZOJ1003: [ZJOI2006]物流运输

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

  6. 【BZOJ1003】物流运输

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

  7. 1003. [ZJOI2006]物流运输【区间DP+最短路】

    Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转 停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严 ...

  8. [Bzoj1003][ZJOI2006]物流运输(spfa+dp)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1003 比较简单的dp,dp[i]为1-i天最小费用,dp方程为dp[i] = min(d ...

  9. BZOJ1003: [ZJOI2006]物流运输trans(DP)

    传送门 额,这道题拿到过后没有什么有建树的想法--甚至根本就没有往DP哪方面去向(还是题见少了,人太笨了--)所以就偷偷的看了一下discuss,看到了状态转移方程才恍然大悟. f(i)=f(j)+d ...

  10. BZOJ 1003 物流运输trans dijstra+dp

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1003 题意: 题解: 首先我们必须机智的知道f[i]=min(f[i],f[j]+cos ...

最新文章

  1. IAP的原理和stm8的IAP
  2. linux——部署DNS
  3. VC++/MFC中调用CHM帮助文档的方法--ShellExecute
  4. CentOS 7 MySql 解压版安装配置
  5. TOMCAT常用优化
  6. PTA 7-3 地铁一日游 (30 分)
  7. clipboard 在 vue 中的使用
  8. Fancy Product Designer 产品定制 wordpress插件
  9. Spring中的ApplicationContextAware使用
  10. linux(Centos5.1)升级至2.6.19内核+L7实现-- 续限P2P软件
  11. VMware Linux RAID5 介绍
  12. code-server安装使用
  13. matlab分段拟合程序,如何用matlab拟合出分段函数?
  14. API接口调用并处理返回的json数据
  15. GameFramework框架——UI底层框架梳理
  16. 在线3D大脑建模网站分享
  17. 记车架号识别程序部署参考文档
  18. 揭秘华为投资版图:规模小、数量少,刀刀致命
  19. android 滤镜 原理,android openglse实现滤镜九宫格
  20. python 列表写入excel_python怎么读取和写入excel表格

热门文章

  1. Vue中拆分视图层代码的5点建议
  2. Android笔记 fragment入门 动态加载fragment demo+ 判断横竖屏
  3. MacOS12+SublimeText+Skim无法正常跳转Skim的问题与解决
  4. PDE双曲型方程数值解形式及例题分析
  5. 【李宏毅机器学习】Recurrent Neural Network Part1 循环神经网络(p20) 学习笔记
  6. Ubuntu18.04安装opencv出现的一系列问题解决方法(持续更新~)
  7. C++学习笔记系列(一)
  8. WORD单元格底部内容不见了怎么办?
  9. MarkDown编辑器语法指南——SegmentFault
  10. ES6_symbol和generator_note