Skip to content
0

ARC204A - Use Udon Coupon 笔记

膜拜 larsr。

先差分,设 f(x) 表示 C[0,x] 的方案数,原问题等价于 f(R)f(L1)

有个 trick,假设确定了操作序列,那么假如 C 没有 max(0,C) 的限制,求 C=x 的方案数,就相当于求 C=CminC(注意 min 出来是负数),因为就相当于在 minC 那里 C 变成了 0,那一部分的负数不应该进入 C,而 C 实则是 (B)(A),记作 S

现在要求 Cx,就相当于求 minCxS,即 maxCxS,然后 maxC=maxi,j(([1,i]A)([1,j]B)),那么只需要保证转移中的每一对 {i,j} 都满足条件即可。

前缀和处理一下 A,B,设 fi,j 表示 A,B 取到 {i,j} 且合法的方案数,其中 f0,0=1,答案为 fn,n,显然若 {i1,j}{i,j} 合法则 {i1,[1,j]} 合法,所以让 fi,jfi1,j 转移过来,最后对 fi 做个前缀和即可。

时空复杂度 O(n2)

最近更新