[ZJOI2006]物流运输
题面
戳这里。
题目分析
我觉的这题用到的思想还是蛮新的QAQ
有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是修改路线是—件十分麻烦的事情,会带来额外的成本。因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小。
什么意思?
难道要跑n遍最短路吗?
很显然是错误的。【蓝题怎么可能这么水?
怎么证明?
简单说明一下,首先假设我们有这样一张图,上面有一条最短路 L 和次短路 R
然后我们来假设一种情况,k=+∞
最短路能在单数时间跑,偶数时间这条路上的点有无法走到的,而次短路能在任何时间跑到。
显然全程跑次短路要优的多。
虽然证明的很潦草,但是最起码证明上面思路是错误的了QAQ
那么这道题究竟该怎么做?
我记得之前有一道模拟赛的题目?【这篇的T2。其中T2跟这道题基本一模一样的操作啊!
拆掉什么什么的边。
我们采取的解决方法就是----分块
那么这道题能不能也分块做呢?
来尝试尝试吧。
既然之前那道题要求的是连通块的个数,我们把点组分块,那么类比下来,这题要求最短路,我们就把最短路分块。
把最短路的长度分成从 i 到 j 这段时间的最短路,记 rdis[i][j]表示在 i 到 j 这段时间里能走的最短路。【这题数据范围这么小,当然随便乱搞
然后,对于这种求最小值的问题,考虑二分答案?没有范围pass
所以尝试DP
定义dp[i]表示从1到 i 这段时间能够走的最短路。
那么就可以列出方程:
dp[i] = min(dp[i] , dp[j] + rdis[j+1][i] * (i-j) +k; 【仔细想想还是蛮显然的
这里有一个要注意的点:【我第一次dp列了一个二维的就是理解错题意了。
题面中有这样一句话:
总成本=n天运输路线长度之和+K*改变运输路线的次数。
k究竟是什么?【灵魂拷问
看一张图
究竟有几个k?1 or 2?
答案是 2 1 啊!!!!Σ(っ °Д °;)っ
也就是说无论一天之内修改多少条路都是一个价格!!!! (╯' - ')╯︵ ┻━┻
我调了一个小时!!!
不读题一时爽,一直不读题一直爽
没好好读题就别读了QAQ