1.17模拟赛题解
设 \(dp_{i,j}\) 前 \(i+j\) 个人站队,第一排站 \(i\) 个人的方案数。
每次对相同身高的一段人进行转移。暴力复杂度是正确的。
时间复杂度 \(O(n^2)\)。
考虑二分答案,设当前 check 的值为 \(t\)。
那么 \(i\) 和 \(j\) 在这段时间内发生碰撞等价于 \(p_i\le p_j,p_i+v_i\cdot t\le p_j+v_j\cdot t\) 且 \(i,j\) 类型不同。
可以按类型排序,以 \(p\) 为下标维护一棵线段树。
时间复杂度 \(O(n\log SIZE\log n)\)。
设先手取得的总和为 \(A\),那么最后的价值为
\[|A|-|S-A|=
\begin{cases}
S\space\space\space\space\space\space\space\space\space\space\space\space(A\geq S)\\
2A-S\space\space(0\leq A<S)\\
-S\space\space\space\space\space\space\space\space\space(A<0)
\end{cases}
\]
容易发现这个函数单调不减,因此每个人每次都会选当前最大的。
时间复杂度 \(O(n\log n)\)。
暴力。
时间复杂度 \(O(\)能过\()\)。

浙公网安备 33010602011771号