前语-不得不说这是一场爆零的比赛,心疼我自己,比赛时自己傻了,不然应该能做两道简单一点的。
从我做题的顺序开始讲起
1005——Path
题意:给你一堆点和单向边(记住是单向!!!要不然我早就过了,不用wa3小时debug),让你删除最小的边,让它不能从1到n走最短路。
一句话题解:就是把所有的最多路搜出来,求最小割
这题我思路来的很快,因为大家知道在跑dij的时候,不重复访问的情况下生成的是一颗最短路径树,难点就在于你如何把所有的最短路同时跑出来,所以在跑dij的时候可以重复的访问一个点(但是从这个点延伸边只有一次,即可以由多个点到达这个点,但是从这个点多次延伸边是重复的没有必要),在访问这个点的时候,把如何访问到这个点记录一下,如果访问到这个点是第一次或者是重复访问,但是距离也是最小值,就把访问这个点的边压到Dinic内,最后用得到的图跑一下最大流即可。
#include
#include
#include
#include
1004——Vacation
题意:给你一堆车排成一条直线,不能超车,每个车都有长度,求最后一辆车的车头到达终点的最短时间
一句话题解:二分答案,前缀和优化
你在计算的时候可以发现,最后一辆车出去时,其他的车都有一个最小距离就行了,不用开特别远,即所有车连在一起时,最后一辆车到达终点,所以一个时间t能否合理,要看是否所有的车都能跑到这个最小距离就行了。(因为第i辆车到达了最小距离,第i+1辆车一定不会因为速度被堵上而到达不了,因为最后这两辆车时脸上的)
T了一发,换了scanf才过,果然cin有点慢啊QAQ
#include
#include
#include
#include
待更新(你们的评论就是我更新的动力QAQ,退役前我要拼最后一次!!!)