P4926 [1007] 倍杀测量者

算法

约束条件 \(\to\) 差分约束

如果令所有选手都不能女装

对于 \(o = 1\) 的约束条件, 有 ( 其中 \(M_i\) 表示选手 \(i\) 的得分 )

\[M_A \geq (k - T) \times M_B \]

对于 \(o = 2\) 的约束条件, 有

\[M_B < (k + T) \times M_A \]

使得不等式组无解

这样的不等式, 在不是所有选手的分数确定的情况下, 怎样转化成差分约束呢?

先假设 \(T\) 一定,

完全可以将不等式转化成差分约束的条件, 具体的

\[\left\{ \begin{array}{lr} M_i > 0, i \in [1, n] \text{ }, & \\ M_{A_i} \geq (k_i - T) \times M_{B_i} \text{ } , o_i = 1, & \\ M_{B_i} < (k_i + T) \times M_{A_i} \text{ } , o_i = 2 & \\ \end{array} \right. \]

将其用 \(\log\) 运算变形

\[\Downarrow \]

\[\left\{ \begin{array}{lr} M_i > 0, i \in [1, n] \text{ }, & \\ \log(M_{A_i}) \geq \log(k_i - T) + \log(M_{B_i}) \text{ } , o_i = 1, & \\ \log(M_{B_i}) < \log(k_i + T) + \log(M_{A_i}) \text{ } , o_i = 2 & \\ \end{array} \right. \]


二分答案 \(T\) , 无解输出 \(-1\) 当且仅当 \(T = 0\) 时方程式依然有解

代码

总结

对于乘法运算, 取 \(\log\) 可以实现变 \(\times\)\(+\)

先假设确定, 再二分此值可以解决特定的一类问题

posted @ 2024-11-14 16:50  Yorg  阅读(1)  评论(0编辑  收藏  举报