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)\)