先求出某一段时间[i,j]一直用同一个路径的最短路,乘上天数,记作cost[i,j]

那就可以设f[i]是前i天的最小代价,f[i]=f[j]+cost[j+1,i]+K

 #include<bits/stdc++.h>
#define pa pair<int,int>
#define ll long long
using namespace std;
const int maxn=,maxm=; ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} struct Edge{
int a,b,l,ne;
}eg[maxm*maxm*];
int N,M,K,E,D,egh[maxm],ect;
int di[maxm][maxn],dis[maxm],mi[maxm],cost[maxn][maxn];
int f[maxn];
bool can[maxm][maxn],used[maxm],flag[maxm]; inline void adeg(int a,int b,int l){
eg[++ect].a=a;eg[ect].b=b;eg[ect].l=l;eg[ect].ne=egh[a];egh[a]=ect;
} inline int dijkstra(){
priority_queue<pa,vector<pa>,greater<pa> > q;while(!q.empty()) q.pop();
memset(dis,,sizeof(dis));memset(flag,,sizeof(flag));
dis[]=;q.push(make_pair(,));
while(!q.empty()){
int p=q.top().second;q.pop();if(flag[p]||!used[p]) continue;
if(p==M) break;
for(int i=egh[p];i!=-;i=eg[i].ne){
int b=eg[i].b;
if(dis[b]>dis[p]+eg[i].l){
dis[b]=dis[p]+eg[i].l;
q.push(make_pair(dis[b],b));
}
}flag[p]=;
}return dis[M];
} inline void pre(){
for(int i=;i<=N;i++){
memset(mi,,sizeof(mi));
for(int j=i;j<=N;j++){memset(used,,sizeof(used));
used[]=used[M]=;
for(int k=;k<M;k++){
mi[k]=min(mi[k],(int)can[k][j]);
if(mi[k]) used[k]=;
}int re=dijkstra();
cost[i][j]=(re>=0x3f3f3f3f)?-:re*(j-i+);
//printf("%d %d %d\n",i,j,cost[i][j]);
}
}
} int main(){
int i,j,k;
N=rd(),M=rd(),K=rd(),E=rd();
memset(egh,-,sizeof(egh));
for(i=;i<=E;i++){
int a=rd(),b=rd(),c=rd();
adeg(a,b,c);adeg(b,a,c);
}D=rd();
for(i=;i<=D;i++){
int a=rd(),b=rd(),c=rd();
di[a][b]=;di[a][c+]=-;
}for(i=;i<=M;i++){
for(j=,k=;j<=N;j++){
k+=di[i][j];can[i][j]=k?:;
}
}pre();memset(f,,sizeof(f));f[]=-K;
for(i=;i<=N;i++){
for(j=;j<i;j++){
if(cost[j+][i]==-) continue;
f[i]=min(f[j]+cost[j+][i]+K,f[i]);
}//printf("%d %d\n",i,f[i]);
}printf("%d\n",f[N]);
return ;
}

bzoj1003/luogu1772 物流运输 (dijkstra+dp)的更多相关文章

  1. bzoj1003: [ZJOI2006]物流运输(DP+spfa)

    1003: [ZJOI2006]物流运输 题目:传送门 题解: 可以用spfa处理出第i天到第j都走这条路的花费,记录为cost f[i]表示前i天的最小花费:f[i]=min(f[i],f[j-1] ...

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

    传送门 dp好题. 每一天要变更路线一定还是走最短路. 所以l~r天不变更路线的最优方案就是把l~r天所有不能走的点都删掉再求最短路.显然是可以dp的. 设f[i]表示第i天的最优花销.那么我们枚举在 ...

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

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

  4. 【BZOJ1003】物流运输(动态规划,最短路)

    [BZOJ1003]物流运输(动态规划,最短路) 题面 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司 ...

  5. bzoj1003 [ZJOI2006]物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 6300  Solved: 2597[Submit][Stat ...

  6. bzoj1003[ZJOI2006]物流运输trans

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

  7. BZOJ1003: [ZJOI2006] 物流运输 trans

    物流运输--看了神犇的题解,就是dp+最短路,设f[i]为1~i天的最少花费,那么 dp[i]=min(cost[1,i],min{dp[j]+cost[j+1,i]+K,1≤j<i}) 就是从 ...

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

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

  9. [BZOJ1003] [ZJOI2006] 物流运输trans (最短路 & dp)

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

随机推荐

  1. Luogu P2602 [ZJOI2010]数字计数

    这算是一道数位DP的入门题了吧虽然对于我来说还是有点烦 经典起手式不讲了吧,\(ans(a,b)\to ans(1,b)-ans(1,a-1)\) 我们首先预处理一个东西,用\(f_i\)表示有\(i ...

  2. 在平衡树的海洋中畅游(一)——Treap

    记得有一天翔哥毒奶我们: 当你们已经在平衡树的海洋中畅游时,我还在线段树的泥沼中挣扎. 我觉得其实像我这种对平衡树一无所知的蒟蒻也要开一开数据结构了. 然后花了一天啃了下最简单的平衡树Treap,感觉 ...

  3. Linux系统特殊变量

    系统给定的特殊变量: 变量名 作用 $0 当前脚本的名字 $n 传递给脚本或者函数的参数,n表示第几个参数 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 $@ 传递给脚本或者函数 ...

  4. Spring+SpringMVC+MyBatis整合(easyUI、AdminLte3)

    实战篇(付费教程) 花了几天的时间,做了一个网站小 Demo,最终效果也与此网站类似.以下是这次实战项目的 Demo 演示. 登录页: 富文本编辑页: 图片上传: 退出登录: SSM 搭建精美实用的管 ...

  5. (理论篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝

    为了快速构建项目,使用高性能框架是我的职责,但若不去深究底层的细节会让我失去对技术的热爱. 探究的过程是痛苦并激动的,痛苦在于完全理解甚至要十天半月甚至没有机会去应用,激动在于技术的相同性,新的框架不 ...

  6. 变量 var &函数new

    声明变量 变量:变量是存储信息的容器,创建变量通常称为"声明"变量 变量必须以字母开头(小驼峰式myName): 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做): 变量名 ...

  7. 同步手绘板——将View的内容映射成Bitmap转图片导出

    在Android中自有获取view中的cache内容,然后将内容转换成bitmap,方法名是:getDrawingCache(),返回结果为Bitmap,但是刚开始使用的时候,得到的结果都是null, ...

  8. 第三个spring冲刺第2天

    今天我们有了计时功能的实现,并且在考虑如何使得计时器美观好看达到我们的要求,对此我们换了不同的背景,时钟框,效果还有待查看.

  9. 开始第一段SPRINT

    四则运算Sprint计划 1.小组成员: 李豌湄:master 江丹仪:产品负责人 2.现状: 初步有一个四则运算的程序代码, 我们这个团队的编程基础比较薄弱,还不知道怎么将程序与数据库连接,也是在边 ...

  10. SpringMVC一例 是否需要重定向

    在ASP.NET MVC下: return view("List") 和 return RedirectToAction("List") 百度知道的最佳答案: ...