思路:最短路+DP

提交:1次

题解:

$f[i]$表示到第$i$天的最小代价,我们可以预先处理出$i,j$两天之间(包括$i,j$)都可通行的最短路的代价记做$s[i][j]$,然后有$f[i]=min(f[i],f[j]+s[j+1][i]*(i-j)+W);$

#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#define ull unsigned long long
#define ll long long
#define R register int
using namespace std;
#define pause (for(R i=1;i<=10000000000;++i))
#define In freopen("NOIPAK++.in","r",stdin)
#define Out freopen("out.out","w",stdout)
namespace Fread {
static char B[1<<15],*S=B,*D=B;
#ifndef JACK
#define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
#endif
inline int g() {R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-1:fix;if(ch==EOF) return EOF; do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
} inline bool isempty(const char& ch) {return (ch<=36||ch>=127);}
inline void gs(char* s) {register char ch; while(isempty(ch=getchar()));do *s++=ch; while(!isempty(ch=getchar()));
}
} using Fread::g; using Fread::gs;namespace Luitaryi {
const int N=25,M=110;
int t,n,W,m,cnt;
int vr[N*N],nxt[N*N],w[N*N],fir[N],d[N],s[M][M];
ll f[N];
bool vis[N],ban[N],c[N][M];
inline void add(int u,int v,int ww) {vr[++cnt]=v,w[cnt]=ww,nxt[cnt]=fir[u],fir[u]=cnt;}
inline int spfa() {memset(d,0x3f,sizeof(d)); memset(vis,0,sizeof(vis));queue<int> q; q.push(1); d[1]=0; vis[1]=true;while(q.size()) {R u=q.front(); q.pop(); vis[u]=false;if(ban[u]) continue;for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];if(d[v]>d[u]+w[i]) {d[v]=d[u]+w[i];    if(!vis[v]) q.push(v),vis[v]=true;}} } return d[n];
}
inline void main() {t=g(),n=g(),W=g(),m=g();for(R i=1,u,v,w;i<=m;++i) u=g(),v=g(),w=g(),add(u,v,w),add(v,u,w);m=g(); for(R i=1,u,l,r;i<=m;++i) {u=g(),l=g(),r=g(); for(R j=l;j<=r;++j) c[u][j]=true;} for(R i=1;i<=t;++i) { memset(ban,0,sizeof(ban));for(R j=i;j<=t;++j) {for(R u=1;u<=n;++u) ban[u]|=c[u][j];s[i][j]=spfa(); }} for(R i=1;i<=t;++i) { f[i]=1ll*s[1][i]*i;for(R j=1;j<i;++j) f[i]=min(f[i],f[j]+1ll*s[j+1][i]*(i-j)+W);} printf("%lld\n",f[t]);
}
}
signed main() {Luitaryi::main();
}


2019.07.21

转载于:https://www.cnblogs.com/Jackpei/p/11222688.html

P1772 [ZJOI2006]物流运输 最短路+DP相关推荐

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

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

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

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

  3. P1772 [ZJOI2006]物流运输(线性dp+最短路径)

    P1772 [ZJOI2006]物流运输 题意 [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头 A 运到码头 B.由于货物量比较大,需要 nnn 天才能运完.货物运输过程中一般要转 ...

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

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

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

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

  6. P1772 [ZJOI2006]物流运输

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

  7. 洛谷 P1772 [ZJOI2006]物流运输

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

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

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

  9. BZOJ1003: [ZJOI2006]物流运输

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

最新文章

  1. redis数据持久化到mysql_Redis【数据持久化篇】
  2. win7(64)与samba不兼容
  3. java 有参数的构造函数如何注入_Spring5参考指南:依赖注入
  4. 倩女幽魂服务器维护时间,9月5日在线维护公告
  5. 光纤耦合角度_一种光纤准直器的耦合找光方法与流程
  6. Struts 2读书笔记-----使用Action的动态方法调用
  7. 一次清空所有数据方法
  8. Atitit.远程文件技术 webdav ftp scp ssh-sftp http nfs smb 的区别与总结
  9. 机器学习- 吴恩达Andrew Ng - week3-4 solve overfitting
  10. 学堂在线计算机,学堂在线PC客户端
  11. java实战我爱自学网,白银java教程我要自学网
  12. 泛函分析(空间部分)知识点总结
  13. Linux系统通过console口连接交换机
  14. 真正的爱情是日久生情
  15. 单条视频播放超7000万,网红界“大油田”如何掀起快手流量浪潮?
  16. 判断IE版本并给出提示升级浏览器
  17. 候补购票进一步提升旅客的购票体验
  18. 安卓apache php mysql_Android下安装apache、mysql、php环境
  19. 关于 ajax Content-Type 的问题 贼拉有用的!!!
  20. solidworks批量图号分离_SolidWorks如何利用宏来快速的实现 “图号名称”分离 呢?...

热门文章

  1. Oracle学习(十三)优化专题 【持续更新】
  2. 20181213_任务(3D奖品设计+30天单词练习)
  3. mybatis基础(一)
  4. 转:Hash, MAC,HMAC说明
  5. JQuery学习使用笔记 -- JQuery插件开发
  6. 3ds max 渲染清晰面片的边缘
  7. setTimeout() 实现程序每隔一段时间自动执行
  8. 前端学习 -- 内联框架iframe
  9. zabbix nginx error log监控
  10. jetbrains从入门到卸载 (前言) 为什么要jetbrains