专栏文章

题解:AT_arc123_e [ARC123E] Training

AT_arc123_e题解参与者 2已保存评论 1

文章操作

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

当前评论
1 条
当前快照
1 份
快照标识符
@mipd9df6
此快照首次捕获于
2025/12/03 10:06
3 个月前
此快照最后确认于
2025/12/03 10:06
3 个月前
查看原文
我们令 f(i)f(i)AA 在第 ii 天的等级,g(i)g(i)BB 的。
首先考虑一下没有天数上限怎么做。
我们考虑直接计算 Li[f(i)=L][g(i)=L]\sum \limits_{L} \sum \limits_i [f(i)=L][g(i)=L]
可以发现其对应到数轴上就分别是一个长度为 BxB_xByB_y 的区间。这两个区间一个每次会移动 BxB_x 位一个会移动 ByB_y 位。不妨设 Bx<ByB_x < B_y,并且令 Δ=ByBx\Delta = B_y-B_x。则 xxyy 的移动会经历这四个阶段(令两个区间分别为 [lx,rx][l_x,r_x][ly,ry][l_y,r_y]),每个阶段中的每次移动都会给答案产生贡献:
  1. rx<lyr_x<l_y:此时贡献为 00
  2. lx<lyrxl_x<l_y \le r_x:可以算出初始的贡献值 ss,并且每次都会令 ss+Δs \leftarrow s+\Delta
  3. lylxrxryl_y \le l_x \le r_x \le r_y:每次的贡献值为 BxB_x
  4. lxry<rxl_x \le r_y <r_x:可以算出初始的贡献值 ss,并且每次都会令 ssΔs \leftarrow s-\Delta
  5. ry<lxr_y<l_x:贡献为 00
需要注意的是,这五个阶段可能并不都出现。当没有天数上限的时候,直接对着算即可。
现在有了天数上限,则可以算出 nn 是在哪个阶段的哪个点,单独处理那一个等级即可。
时间复杂度 O(T)O(T)

评论

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

正在加载评论...