1. 程式人生 > 實用技巧 >2020.09.06 測試總結

2020.09.06 測試總結

A

簡要題意

給你一張僅由 X. 組成的 \(n\times n\) 的地圖,您可以將一個 \(k\times k\) 的正方形覆蓋成 .,求覆蓋後的連通塊大小的最大值。

\(\text{subtask 1 (20 pts)}: n\leq 50\)

\(\text{subtask 2 (30 pts)}: n\leq 100\)

\(\text{subtask 3 (50 pts)}: n\leq 500\)

​ 對於所有資料,\(1\leq k\leq n\leq 500\)

考場思路

發現 \(O(n^4)\) 可以有 \(50\) 分,直接打了。

具體就是列舉 \(k\times k\)

的左下角,再通過一次 DFS 求連通塊大小。

正解

不會。

B

簡要題意

給你一個長為 \(n\) 的數列 \(A\),求刪去若干個數之後使得 \(\sum_{i=1}^m[B_i=i]\) 的最大值,其中 \([x]\) 表示若 \(x\) 為真,則為 \(1\),為假,則為 \(0\)

​ 對於 \(20\%\) 的資料,\(n \leq 10\)

​ 對於 \(50\%\) 的資料,\(n \leq 1000\)

​ 對於 \(80\%\) 的資料,\(n \leq 10^5\)

​ 對於 \(100\%\) 的資料,\(n \leq 5\times 10^5\)\(1\leq A_i\leq 10^9\)

考場思路

\(O(2^n)\) 列舉一下每個數取或不取,可以得 \(20\) 分。

正解

先對 \(A\) 排序,排序後讓 \(A_i=i-A_i\),求最長不下降子序列即可。

C

簡要題意

​ 求出滿足以下條件的 \(n\times m\)\(01\) 矩陣個數:

  • 對於第 \(i\) 行:
    • \(1\sim l_i\) 列有且僅有一個 \(1\)
    • \(r_i\sim m\) 列有且僅有一個 \(1\)
    • \(l_i+1\sim r_i - 1\) 列全為 \(0\)
  • 對於第 \(j\) 列:
    • 至多有一個 \(1\)

對於 \(20\%\) 的資料,\(n \leq 7,~m \leq 15\)

​ 對於 \(40\%\) 的資料,\(n\leq 15,~m \leq 50\)

​ 對於 \(70\%\) 的資料,\(n\leq 100,~m\leq 300\)

​ 對於 \(100\%\) 的資料,\(n\leq 1500,~m\leq 3000,~1\leq l_i< r_i\leq m\)

考場思路

狀壓 DP。

\(dp_{i,S}\) 表示從 \(1\)\(i\) 行的總體情況為一個二進位制數 \(S\),用 DFS 轉移即可。

正解

不會。

總結

\(50+20+20=90,~ \text{rk 2}\)

很高興有這樣的成績,暴力打滿了。

主要是 T3 耗費時間太多了,肝 T2 會好一些。