P4926 [1007] 倍杀测量者 题解
P4926 [1007] 倍杀测量者
Description
给出 \(s\) 个条件和 \(t\) 个数组 \(A\) 中的值,让你求出最大的正实数 T,使得不全满足条件。
-
1 a b k:\(A_a\ge (k-T)\times A_b\) -
2 a b k:\(A_b < (k+T)\times A_a\)
\(1\le n,s\le 10^3\)。
Solution
容易想到二分 \(T\),主要讲讲如何转化条件。
opt 1
\[A_a\ge (k-T)\times A_b
\]
\[\log (A_a)\ge \log(k-T)+\log(A_b)
\]
add_edge(b,a,log(k-T));
opt 2
\[A_b < (k+T)\times A_a
\]
\[\log(A_b)<\log(k+T)+ \log(A_a)
\]
\[\log(A_a) > \log(A_b)-\log(k+T)
\]
add_edge(b,a,-log(k+T))
正确性被题目中的 1e-4 保证了。
最坏复杂度为 \(O(nm)\),可以通过。
Tips:如果 \(T=0\) 时却能满足所有条件,输出 -1。

浙公网安备 33010602011771号