题意就是告诉你有n个点,e条边,m天,每天都会从起点到终点走一次最短路,但是有些点在某些时间段是不可走的,因此在某些天需要改变路径,每次改变路径的成本是K,总成本=n天运输路线长度之和+K*改变运输路线的次数。问如果走才能使得的总成本最小。

首先我们需要标记S这个点,在l到r天范围内,不可走,我们开始肯定是想那么开个数组把,那么开一个数组a[p][j]表示P这个点在第j天是不可走的,然后用链式前向星建边,连接。但是这个题我们改如何才能求到N天的最小成本呢???

这个我感觉也是很经典的问题了,DAG上的动态规划啊!!!

我们用一个cost数组表示cost[i][j]中,i到j天范围内的最短路,用一个flag[k] |= a[k][l]表示k点在l天的情况。。。因此我们有一个牛逼的式子

for (int k=;k<=m;k++)
for (int l=i;l<=j;l++)
flag[k]|=a[k][l];

这样就可以表示在L到R区间内的可走性,如果其中任何一个点在L-R天中的任何一天不可用,那么在L到R区间一定不可用

然后我们可以轻易的理工SBFA求出L到R区间内的最短路,最后转化为成本,最后我们我们用一个DP数组,转移方程是

dp[i]=min(dp[i],dp[j]+cost[j+1][i]+k);

意思是我从起点到i点,和从起点到j点,j点到 i 的距离的消耗进行比较,取最后的即可这样我们通过这个小DP,使得范围不断 扩大。

最后得到答案

最新文章

  1. presto的动态化应用(一):presto节点的横向扩展与伸缩
  2. JavaScript学习笔记-商品管理新增/删除/修改功能
  3. 客户端判断是否为IE9以上版本
  4. django-cms 代码研究(七)杂七杂八
  5. C++中颜色的设置
  6. MySQL时间戳和时间格式转换函数
  7. ESP8266 TCP传输AT指令顺序
  8. IOS AVAUDIOPLAYER 播放器使用
  9. [视频转换] C#VideoConvert视频转换帮助类 (转载)
  10. 201521123031 《Java程序设计》 第十周学习总结
  11. 如何将一个div水平垂直居中?4种方法做推荐
  12. composer在update时提示file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO
  13. mysql5.7安装记录
  14. mac 下node,yarn安装及版本切换
  15. nginx负载均衡优化配置
  16. Gym 101775C - Traffic Light - [思维题]
  17. Zeu.js
  18. [内核驱动] miniFilter 内核层与应用程序通信
  19. StringBuilder的实现与技巧ZZ
  20. Spartan6 slave SelectMap configuration fails owing to JTAG?

热门文章

  1. django加密解密api
  2. Elasticsearch深入搜索之结构化搜索及JavaAPI的使用
  3. CENTOS7错误:Cannot find a valid baseurl for repo: base/7/x86_6
  4. UITableView的分割线长短的控制
  5. Linux下编译安装redis
  6. LeetCode算法题-Add Digits(Java实现-3种解法)
  7. 远程连接ubuntu的MongoDB遇到的坑
  8. Jenkins+Ansible+Gitlab自动化部署三剑客-gitlab本地搭建
  9. http: server gave HTTP response to HTTPS client &amp; Get https://192.168.2.119/v2/: dial tcp 192.168.2.119:443: getsockopt: connection refused
  10. 微信小程序接入,https服务器搭建和调试