专栏文章

题解:P11677 [USACO25JAN] Shock Wave P

P11677题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minl9wvj
此快照首次捕获于
2025/12/02 04:15
3 个月前
此快照最后确认于
2025/12/02 04:15
3 个月前
查看原文
下文默认 1-index。
注意到对于 1<x<n1<x<n 的位置,至多进行一次操作。证明就是考虑若选了两个非 1,n1,n 位置 xyx\le y 进行操作,会发现不如操作 x1,y+1x-1,y+1 优。令最终 11 操作了 aa 次,nn 操作了 bb 次。我们先二分出只用 1,n1,n 操作的答案,随后 check 下答案能否通过非 1,n1,n 操作取到 ans1ans-1 即可。
二分出仅用 1,n1,n 操作的答案是容易的。令 a+b=mida+b=mid,分别讨论 2in,2i=n+1,2i>n+12i\le n,2i=n+1,2i>n+1 可以得到 a,ba,b 的下界,判断两个下界加起来是否小于等于 midmid 即可。注意这里要特判分母为 00 的情况。下文令这个二分出来的答案为 ansans
现在我们加上中间的操作 mm,重新写一下上面 check 的式子,会多出来一项 mi-|m-i|。暴力做是平方老哥级别的,无法通过。注意到下界的分母是 n2i+1/2in1n-2i+1/2i-n-1 这启示我们考虑本质不同的下界取值,注意到其只有 O(nlogn)O(n\log n) 种,因此我们用两个优先队列(里面放 m,im,i 与当前下界)维护当前最严格的下界限制,每次暴力更新下界即可,复杂度 O(nlognlogV)O(n\log n\log V)。注意这里由于分母的正负性,需要从左至右以及从右至左跑两遍。
说下实现细节。
  • 需要开 __int128,注意下你的不等式是不是写错了,个别题解的不等式也存在着一些问题。
  • 可以不关心除法精度问题,直接向上取整即可。
  • 注意优先队列中不能放入使分母为 00 的那个位置(nn 为奇数时就是 n+12\frac{n+1}{2}

评论

0 条评论,欢迎与作者交流。

正在加载评论...