专栏文章

ARC204A Use Udon Coupon

AT_arc204_a题解参与者 2已保存评论 2

文章操作

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

当前评论
2 条
当前快照
1 份
快照标识符
@mio9t5ll
此快照首次捕获于
2025/12/02 15:42
3 个月前
此快照最后确认于
2025/12/02 15:42
3 个月前
查看原文
注意到维护的 QQ 事实上是一个队列,那么这个条件可以先转化成,将 AABB 归并,要求操作序列的每一个前缀中 AA 的数量都不少于 BB 的数量。
这个跟括号序列一样的玩意儿典到家了。我们考虑一条折线状物,最初在点 (0,0)(0, 0),若当前遇到 BB,则向右走 BiB_i,向上走 BiB_i;若当前遇到 AA,则向右走 AiA_i,向下走 AiA_i,同时,过程中如果达到 y=0y = 0,就保持在这条线上水平向右,而并非向下,这对应了与 00max\max。设 S=1inBi1inAiS = \sum _ {1 \le i \le n} B_i - \sum _ {1 \le i \le n} A_i,那么我们最后会到达 (S,S+k)(S, S + k) 的位置。
至于为何会有这个 +k+k,显然是中途产生了一些与 00max\max 导致的。问题进一步地转化成了 kRSk \le R - SkL1Sk \le L - 1 - S 的操作序列数量。
考虑 kk 是啥。我们先不与 00max\max,折线最后会跑到 (S,S)(S, S) 的位置,中途会在 y=0y = 0 以下有一部分。考虑某个这样的点 (x0,y0)(x_0, y_0),我们从第一象限走到第二象限来到 (x0,y0)(x_0, y_0),再和 00 取一个 max\max,这时相当于将 x0x_0 右边的整个折线都向上平移了 y0\lvert y_0 \rvert。遍历每一个这样的最低点,直到整个折线都平移到了第一象限,总共平移的距离 kk 显然是最低点的纵坐标绝对值,也即前缀 AB\sum A - \sum Bmax\max
已经差不多了。问题最后转化成了,对于 x{L1S,RS}x \in \{ L - 1 - S, R - S \},求出 AABB 归并起来的序列个数,满足:
  • 任意前缀中,AA 的个数不少于 BB 的个数。
  • 任意前缀中,ABx\sum A - \sum B \le x
直接对着这个东西计数即可,设 fi,jf _ {i, j} 表示考虑到 AiA_i,在其之前有 jjBB 的方案数。第一个条件限制了 j<ij < i,第二个条件限制了 jpj \ge p,其中 pp 是最小的满足 1kiAk1kpBkx\sum _ {1 \le k \le i} A_k - \sum _ {1 \le k \le p} B_k \le x。枚举 Ai1A _ {i - 1}AiA_i 之间 BB 的个数,从 fi1,?f _ {i - 1, ?} 转移到 fi,jf _ {i, j},直接做是 O(n3)O(n ^ 3) 的,容易使用前缀和或双指针做到 O(n2)O(n ^ 2)

评论

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

正在加载评论...