2024 牛客多校 3

https://ac.nowcoder.com/acm/contest/81598


睡到十点多起床,吃完早饭开打。。。下午倒是不困了,脑子还是不转

a 有个显然的贪心,没办法加速模拟,1 WA 1 T 后给 zsy 了。这种前期题没秒掉的话还是趁早丢出去吧
h 随机数据本地 1.4s,牛客十连重测,以为卡卡常就行了,最后也没过。看榜很早就有 1A,肯定有简单做法,应该再想想的


A

船第一次到右侧后还需要往返 \(c=\lceil\frac{n-r}{r-l}\rceil\)
每个人需要 \(1\) 体力到右侧,还可以往返 \(a_i=\lfloor\frac{h_i-1}{2}\rfloor\)

一个必要条件为 \(\sum\min(a_i,c)\ge cl\)。可以归纳证明充分性

H \(\star\)

赛时做法

考虑枚举格子 \((x,y)\),计算包含 \((x,y)\) 的最小交集

问题变为矩形取最值,离线单点查询(带 \(4\) 的常数)。赛时的做法是线段树套并查集

key observation:矩形交的边界在原矩形的边界上

上述做法只需要对边界进行

std

考虑枚举交集的左上角。进一步利用边界的性质

K

通过拆点把问题转化为在边上放怪

\(k=1\) 为裸的最小割。考虑分层图:点 \(u_i\) 表示从源点出发经过 \(i\) 个怪到达 \(u\)

  • 原图中源点 \(s\)\((S,s_0,\infty)\)
  • 原图中汇点 \(t\)\((t_i,T,\infty)\)
  • 原图中边 \((u,v)\)\((u_i,v_i,1),(u_i,v_{i+1},\infty)\)

原图中边在分层图上只会被割一次:根据实际含义可以证明层高的那次可以去掉

流量 \(<n\),时间复杂度 \(O(knm)\)

posted @ 2024-07-24 16:35  ft61  阅读(14)  评论(0编辑  收藏  举报