给定n个点,m条有向边,每个点是一个吃饭的地方,每个人一盒饭。每个点有S个人,有B盒饭。每条边只能被走c次,每条边上都有电线,第一个人通过的时候,不会破坏电线,从第二个人开始,每次都有概率p破坏掉电线。使得每个人都能吃饭,求最小的破坏电线的概率
题解
- 朴素的建图,但要注意某个区的$S>B$,他要到别的区去取,所以源点和$S>B$连接,汇点和$S<B$连接。
- 考虑最小的破坏电线的概率,但我们只能算(1-p)即最大的不损坏的概率
- 考虑如何计算最大的不损坏的概率,即网络中所有费用的相乘,但网络流算法中的费用都是相加的关系,可以通过取log的方法解决这个问题(通常取log2),跑最大费用最大流即可,最后的答案为 $1-pow(2,mincost)$。
- 对数函数和幂函数互为反函数。
- 在牛客上跑的挺快的,HDU上T了……
代码
1 |
|