luogu / pjudge
題意:\(n\) 個點,權值 \(x,y,c\),選 \(m\) 個,\(S\) 為選出的集合。最大化 \(\max p_x-\min p_x+\max p_y-\min p_y+\sum p_c(p\in S)\)
\(n,m\le 2e5\)
這是藍。這是藍。這是藍。如此水平,令人汗顏!
有一個重要的性質:
當 \(m\gt 4\) 時,按 c 排序後前 \(m-4\) 大的一定會選。
證明:反證,題目相當於選 4 個點加上 \(x,-x,y,-y\) 的貢獻。那當 \(m\gt 4\) 時一定有沒有貢獻進去的點,將其調整為 c 更大的點顯然更優。
然後似乎就做完了?問題轉化為了 \(m \le 4\)。
直接 dp,\(f_{i, j, k}\) 表示前 \(i\) 個,選了 \(j\) 個,貢獻集合狀態為 \(k\) 的最大值。
其中 \(k\le 16\),代表的是目前選的裡面是否有貢獻給那 4 個 max 和 min。
目標:\(f_{n,m,16}\)