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

posted @ 2025-08-20 23:24  Creativexz  阅读(32)  评论(0)    收藏  举报