BZOJ1003_物流运输_KEY
这是一道DP+最短路径的好题。
首先预处理每天每个点的最短路径。
用SPFA进行处理。即cost[i][j]为第i天到底j天的1到M点的最小花费。
就可以水水的DP。
设f[i]为第i天的最优方案,f[i]=min(f[i],f[j]+cost[j+1][i]*(i-j)+K);
即从第j天之后开始改变航线。
code:
/**************************************************************
Problem: 1003
User: yekehe
Language: C++
Result: Accepted
Time:32 ms
Memory:1536 kb
****************************************************************/ #include <bits/stdc++.h>
using namespace std;
int N,M,K,e,mp[][],wi[][],tag[];
int cost[][],f[],dist[],l[],h,t,flag[];
int spfa(){
h=t=;
l[++t]=;dist[]=;
while(h<t){
int front=l[++h];flag[front]=;
for(int i=;i<=M;i++){
if(mp[front][i]&&dist[front]+mp[front][i]<dist[i]){
dist[i]=dist[front]+mp[front][i];
if(!flag[i]&&!tag[i])l[++t]=i,flag[i]=;
}
}
}
return dist[M];
}
int main(){
scanf("%d%d%d%d",&N,&M,&K,&e);
for(int i=;i<=e;i++){
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
mp[x][y]=mp[y][x]=c;
}
int R;scanf("%d",&R);
for(int i=;i<=R;i++){
int p,x,y;scanf("%d%d%d",&p,&x,&y);
for(int j=x;j<=y;j++)wi[p][j]=;
}
for(int i=;i<=N;i++){memset(tag,,sizeof(tag));
for(int j=i;j<=N;j++){
for(int k=;k<=M;k++)tag[k]|=wi[k][j];
memset(dist,,sizeof(dist));
cost[i][j]=spfa();
}
}
for(int i=;i<=N;i++){f[i]=1e8;
for(int j=;j<i;j++){
if(cost[j+][i]!=)f[i]=min(f[i],f[j]+cost[j+][i]*(i-j)+K);
}
}
printf("%d",f[N]-K);
}
BZOJ1003_物流运输_KEY的更多相关文章
- 【BZOJ1003】【ZJOI2006】物流运输
1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2556 Solved: 1008[Submit] ...
- BZOJ 1003 物流运输 题解 【SPFA+DP】
BZOJ 1003 物流运输 题解 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的 ...
- BZOJ1003 物流运输 最短路+DP
1003: [ZJOI2006]物流运输 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条 ...
- BZOJ-1003 物流运输trans SPFA+DP
傻逼错误耗我1h,没给全范围坑我1A.... 1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MB Submit: 529 ...
- [ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5999 Solved: 2473[Submit][Stat ...
- bzoj1003 [ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6300 Solved: 2597[Submit][Stat ...
- 【BZOJ】【1003】【ZJOI2006】物流运输trans
最短路/DP 这题数据规模并不大!!这是重点……… 所以直接暴力DP就好了:f[i]表示前 i 天的最小花费,则有$f[i]=min\{f[j]+cost[j+1][i]+k\} (0\leq j \ ...
- 【bzoj1003】[ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6331 Solved: 2610[Submit][Stat ...
- bzoj1003: [ZJOI2006]物流运输
dp+最短路.暴力枚举就可以了.O(n3logn).样例中m=n然后测样例过了.然后 54行习惯性的dis[n]然后就WA了!!!. #include<cstdio> #include&l ...
随机推荐
- sort给文件按照大小排序
ls -l|sort -n -k5 -n 表示以数值排序-k5 表示以第几列排序还可以用 -t参数指定行内容的分隔符 参考链接:http://www.cnblogs.com/myd620/p/6002 ...
- AsyncTask基础知识
大家都知道,在子线程中是不能更新UI的,必须要采用异步消息处理机制.一般的做法就是在有需要的地方,使用Handler发送消息给主线程,然后在主线程中处理消息更新UI.如果好多子线程都有更新UI的需求, ...
- BIND简易教程(2):BIND视图配置
目录:BIND简易教程(1):安装及基本配置BIND简易教程(2):BIND视图配置(本篇)BIND简易教程(3):DNSSec配置 上文书说到,我们把aaa.apple.tree解析到192.168 ...
- 【[TJOI2014]上升子序列】
这本质上是一个\(dp\) 如果没有"两个上升子序列相同,那么只需要计算一次"这一个性质,那么就很好做了,我们用\(dp[i]\)表示以\(i\)结尾的上升子序列个数,那么就有\( ...
- sql的寫法,推薦的寫法,全文索引提高類似like查詢的效率
說明:logistics_detail表中每個deliver_id可能對應多個loginticsType,但是我們只要獲取最大的那一個. SELECT dm.delivery_code,dm.deli ...
- Css3 实现关键帧动画
<div class="person"> </div> <script> var str1 = "@keyframes move{&q ...
- Many-to-many relationships in EF Core 2.0 – Part 4: A more general abstraction
In the last few posts we saw how to hide use of the join entity from two entities with a many-to-man ...
- MyEclipse 根据左括号或右括号查找另外一半
在MyEclipse 中如果代码嵌套太多,查找括号是一件非常头疼的事情,今天突然发现了一个快捷键(如下)可以直接定位到另外一半的位置 Ctrl+Shift+P,光标会自动跳到相应的花括号位置, 并且可 ...
- 打印iframe某区域
<a href="#" onClick="parent.iframe名字.focus();window.print();">打印</a>
- ES6系列文章 异步神器async-await
关于异步处理,ES5的回调使我们陷入地狱,ES6的Promise使我们脱离魔障,终于.ES7的async-await带我们走向光明.今天就来学习一下 async-await. async-await和 ...