思路:最短路+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[<<],*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=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
if(ch==EOF) return EOF; do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
} inline bool isempty(const char& ch) {return (ch<=||ch>=);}
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=,M=;
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,,sizeof(vis));
queue<int> q; q.push(); d[]=; vis[]=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=,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=,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=;i<=t;++i) { memset(ban,,sizeof(ban));
for(R j=i;j<=t;++j) {
for(R u=;u<=n;++u) ban[u]|=c[u][j];
s[i][j]=spfa();
}
}
for(R i=;i<=t;++i) { f[i]=1ll*s[][i]*i;
for(R j=;j<i;++j) f[i]=min(f[i],f[j]+1ll*s[j+][i]*(i-j)+W);
} printf("%lld\n",f[t]);
}
}
signed main() {
Luitaryi::main();
}

2019.07.21

P1772 [ZJOI2006]物流运输 最短路+DP的更多相关文章

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

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

  2. 1003: [ZJOI2006]物流运输 最短路+dp

    https://www.lydsy.com/JudgeOnline/problem.php?id=1003 数据范围很小,怎么瞎搞都行,n方dp,然后跑出最短路暴力转移,需要注意的是不能使用的可能有多 ...

  3. [luogu] P1772 [ZJOI2006]物流运输(动态规划,最短路)

    P1772 [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线 ...

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

    P1772 [ZJOI2006]物流运输 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线 ...

  5. BZOJ1003 物流运输 最短路+DP

    1003: [ZJOI2006]物流运输 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条 ...

  6. 洛谷P1772 [ZJOI2006]物流运输 题解

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

  7. luogu P1772 [ZJOI2006]物流运输

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

  8. bzoj1003物流运输 最短路+DP

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

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

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

随机推荐

  1. C++浮点数据的输出控制

    #include <iostream> #include <Windows.h> using namespace std; int main(void) { double va ...

  2. pandas之数据IO笔记

    pandas在进行数据存储与输出时会做一些相应的操作 1.*索引:将一个列或多个列读取出来构成DataFrame,其中涉及是否从文件中读取索引以及列名 2 *类型推断和数据转换:包括用户自定义的转换以 ...

  3. TZOJ2882: 美食节之感恩父母

    #include<stdio.h> int main() { ],b[],i,j,max,m,t1,t2,t3; while(scanf("%d",&m),m) ...

  4. java——数据类型和运算符

    强类型语言 Java语言是一门强类型语言.强类型包含两方面的含义:①所有的变量必须先声明.后使用:②指定类型的变量只能接受类型与之匹配的值.强类型语言可以在编译过程中发现源代码的错误,从而保证程序更加 ...

  5. Trie树(字典树)-题解 P2580 【于是他错误的点名开始了】

    此题可以用STL中的map做,但是了解一下Trie树这个数据结构也是必须的. Trie树(又称字典树)有以下特点: 根节点不包含字符,除它之外的每一个节点都包含一个字符. 从根节点到某一节点,路径上经 ...

  6. 2、JDK8中的HashMap实现原理及源码分析

    本篇提纲.png 本篇所述源码基于JDK1.8.0_121 在写上一篇线性表的文章的时候,笔者看的是Android源码中support24中的Java代码,当时发现这个ArrayList和Linked ...

  7. HTTP参数污染(参数处理图)

  8. Genymotion上运行ARM架构Android项目

    问题 Genymotion是x86的模拟器,在集成一些第三方的SDK时需要添加一些放在armeabi.armeabi-64文件夹下面的.so文件,这些文件在arm架构下才能运行.这时模拟器就不能用了. ...

  9. 关于Vue中,checkBox等组件在赋值后,点击切换页面未及时更新问题

    我们经常碰到这样的问题,在v-for循环中,给某些组件(此处以checkBox为例)赋值后,组件并不能正常切换, 这是因为数据层太多,render函数没有自动更新,需手动强制刷新. 解决方法:在切换c ...

  10. 关于微信小程序获取view的动态高度填坑

    wx.createSelectorQuery().select('#box').boundingClientRect(function (rect) { width = rect.width heig ...