P3072
因為空洞部分不是很好處理,所以考慮繞著外面搜一圈,所以從最外面的草垛的上一個點開始搜,遇到草就讓 \(ans\) 加 1,如果不是草就繼續往外面搜,然後剪一下枝,如果一個不是草的點四周八個格子都不是草,那就不往下搜。
P3073
向周圍四個點連一條邊權為高度差的絕對值的邊,然後最小生成樹即可。
P3074
拓撲排序之後求最大值即可。
P2698
資料結構維護區間最大/最小值,然後二分花盆的長度,\(O(nlogn)\) check即可。
P3049
\(dp_{i,j}\) 表示把 a 陣列前 \(i\) 個和 \(b\) 陣列前 \(j\) 個變為一樣的最小花費,然後可以把 \(a_i\) 拆成 \(i\) 個 \(a_i\),操作變換一下,然後 dp。
P1849
01bfs,求 \((x_0, y_0)\) 到 \((0, 0)\) 的最短路。