ABC233 G & H 题解

ABC233G Strongest Takahashi

题面

题意:

有一个 \(n\times n\) 的网格,有一些格子上有方块。每次操作可以选择一个 \(D\times D\) 的正方形覆盖网格,代价为 \(D\)。问覆盖所有方块的最小代价和是多少。

数据范围:\(1\le n\le50\)

性质:选择的正方形不会接壤。否则将这两个正方形和起来肯定不劣。

\(dp_{sl,sr,el,er}\) 表示覆盖左上角为 \((sl,sr)\),右下角为 \((el,er)\) 的矩形所需的最小代价。

转移可以枚举哪一行 / 列空着,分成两个子问题。

时间复杂度 \(\mathcal{O}(n^6)\),但远远跑不满。

Code:https://atcoder.jp/contests/abc233/submissions/29947922

ABC233H Manhattan Christmas Tree

题面

题意:

给出平面上 \(n\) 个点 \((x_i,y_i)\),有 \(Q\) 次询问。

询问 \(i\):离 \((a_i,b_i)\) 曼哈顿距离第 \(K\) 近的点距离是多少?

数据范围:\(1\le n,x_i,y_i,Q\le10^5\)

看到曼哈顿距离,立马想到能不能转成切比雪夫距离,即 \((x,y)\to(x+y,x-y)\)

发现在这道题里可以这样做。

于是对于每次询问二分答案 \(mid\),在以 \((a_i-mid,b_i-mid)\) 为左下角,\((a_i+mid,b_i+mid)\) 为右上角的正方形内看是否有 \(K\) 个点。这个可以用 动态开点的二维树状数组 / 主席树 做到。

Code:https://atcoder.jp/contests/abc233/submissions/29925632

posted @ 2022-03-08 11:33  csxsi  阅读(161)  评论(2编辑  收藏  举报