Atcoder ABC395 题解

ABC395

A

判断有没有 1i<n,满足 aiai+1。有则 No,没有则 Yes。

submission.

B

随便递归一下,每层传入当前要覆盖的子矩阵的左上角坐标 (x,y),正方形大小 n,以及需要覆盖的字符 p。每次把这个子矩阵覆盖一遍,然后 (x,y)(x+1,y+1),nn2,p=¬p

submission.

C

显然最短的好的子数组一定要首尾相同,否则可以再缩。
于是用一个桶存下当前元素的上一个出现位置,这个位置到当前下标 i 就是可能的答案区间。

submission.

D

画图理解。
先放代码:
submission.

蓝线表示 pos 的映射关系,红线表示 ans 的映射关系,绿线表示 virt 的映射关系。

难搞的就是 swap 操作。我们不需要换鸽子,只需换巢上面贴的数字,即 ans 的映射关系。virtans 互为相反映射。

E

建图:

也就是拆点。

蓝色边表示原始有向图。
这样拆点就可以保证不进行 reverse 操作时,不需走 x 边;reverse 时,一定要走 x 边。

然后就是 Dijkstra 的模板。
答案就是 min(disn,disn)

F

注意到 H 越小,越有可能有解;同时,H 越大,答案越优。我们只需要二分最大的符合答案 H
至于 check 函数,我们可以从算出当前 ui 不考虑 x 的限制可能取值的区间 [li,ri]。维护一个区间 [L,R] 表示上一个 u 最终可能的区间,从 1n 扫一遍,考虑 x 限制,ui 的最终取值一定是前一个 [ui1x,ui1+x]。对应到 ui1 的区间,那么 ui 除了要属于 [li,ri],还要属于 [Lx,R+x]
于是 [L,R][Lx,R+x][li,ri]
如果 [L,R] 是空区间,那就无解。

形式上可以写成三分。
submission.

G

不会。

posted @   wfc284  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示