P1772 [ZJOI2006]物流运输 最短路+DP
思路:最短路+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相关推荐
- 【bzoj1003】[ZJOI2006]物流运输 最短路+dp
传送门:嘿原题在这 题意:给出一个图,求1-m的最短路,但其中有些点在某些时间段会不能用,题目保证有解. 我们可以很(不)容易的看出递推关系式dp[i]=min(dp[i],dp[j]+cost[j+ ...
- bzoj1003 [ZJOI2006]物流运输(最短路+dp)
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转 停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严 ...
- P1772 [ZJOI2006]物流运输(线性dp+最短路径)
P1772 [ZJOI2006]物流运输 题意 [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头 A 运到码头 B.由于货物量比较大,需要 nnn 天才能运完.货物运输过程中一般要转 ...
- 1003. [ZJOI2006]物流运输【区间DP+最短路】
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转 停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严 ...
- BZOJ 1003 物流运输 最短路+dp
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1003 题目大意: 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才 ...
- P1772 [ZJOI2006]物流运输
题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪. ...
- 洛谷 P1772 [ZJOI2006]物流运输
题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪. ...
- BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)
Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit ...
- BZOJ1003: [ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 8800 Solved: 3747 [Submit][St ...
最新文章
- redis数据持久化到mysql_Redis【数据持久化篇】
- win7(64)与samba不兼容
- java 有参数的构造函数如何注入_Spring5参考指南:依赖注入
- 倩女幽魂服务器维护时间,9月5日在线维护公告
- 光纤耦合角度_一种光纤准直器的耦合找光方法与流程
- Struts 2读书笔记-----使用Action的动态方法调用
- 一次清空所有数据方法
- Atitit.远程文件技术 webdav ftp scp ssh-sftp http nfs smb 的区别与总结
- 机器学习- 吴恩达Andrew Ng - week3-4 solve overfitting
- 学堂在线计算机,学堂在线PC客户端
- java实战我爱自学网,白银java教程我要自学网
- 泛函分析(空间部分)知识点总结
- Linux系统通过console口连接交换机
- 真正的爱情是日久生情
- 单条视频播放超7000万,网红界“大油田”如何掀起快手流量浪潮?
- 判断IE版本并给出提示升级浏览器
- 候补购票进一步提升旅客的购票体验
- 安卓apache php mysql_Android下安装apache、mysql、php环境
- 关于 ajax Content-Type 的问题 贼拉有用的!!!
- solidworks批量图号分离_SolidWorks如何利用宏来快速的实现 “图号名称”分离 呢?...