從0到1開展效能測試必備的效能測試要點-jmeter番外篇
P1650 田忌賽馬
有很明顯的貪心思路,用田忌最爛的馬去懟齊王最好的馬。
由於田忌是有主動權的,所以我們直接讓齊王從優到劣出馬。
設計 \(dp\) 狀態:
-
普通 \(dp\): \(dp_{i, j}\) 表示齊王的前 \(i\) 匹馬,對上了田忌的前 \(j\) 匹馬和後 \(i - j\) 匹馬(都按從大到小排序)的最大盈利。
轉移方程:
\[dp_{i, j} = max\{f_{i - 1, j} + g_{n - (i - j) + 1, i}, f_{i - 1, j - 1} + g_{j, i}\} \]\(g_{i, j}\) 表示田忌的第 \(i\) 匹馬和齊王的第 \(j\)
-
區間 \(dp\):\(dp_{i, j}\) 表示田忌使用 \(i \sim j\) 的馬的時候最大盈利,對手是齊王最拉的 \(len\) 匹馬,所以轉移的時候跟 \(b_{n - len + 1}\) 比即可。
P1868 飢餓的奶牛
貪心顯然是可以做的。
emm……但是 \(dp\) 狀態一直沒想出來,看了一眼題解,發現直接 \(f_i\) 表示前 \(i\) 格最大獲利,轉移的時候列舉所有左端點在 \(i\) 前面的區間,取 \(max\) 即可。
P1725 琪露諾
明顯的單調佇列優化 \(dp\),狀態也比較好想,\(f_i\) 表示前 \(i\)
P1417 烹調方案
看著就很揹包,然而發現純揹包不是很可做,因為跟 \(t\) 有關。
我們要想辦法把 \(t\) 的影響消掉,對於兩個物品 \(x\),\(y\),把 \(x\) 在前,\(y\) 在後的獲利和 \(y\) 在前,\(x\) 在後的獲利列出來。
發現前面優於後面的條件是 \(x_c * y_b < y_c * x_b\)。
按這個排序,然後跑個 01揹包即可。
AT2000 [AGC002F] Leftmost Ball
非常妙的一道題。
首先轉換以下題意,放 \(n\) 個白球和 \(n \times (k - 1)\) 個其他顏色的球有多少種合法方案。
不難發現,任意字首中白球個數一定大於其它顏色的球的個數。
所以我們設 \(dp_{i, j}\) 表示放了 \(i\) 個白球和 \(j\) 種其他顏色的球(全部放了)的方案數。
轉移的時候可以從 \(dp_{i - 1, j}\) 和 \(dp_{i, j - 1}\) 轉移過來。
- 從 \(dp_{i - 1, j}\) 轉移,就是再多放一個白球,顯然一定是合法的。
- 從 \(dp_{i, j - 1}\) 轉移,從剩下 \(n - j + 1\) 種沒有放置的顏色中選一種放置,然後該種顏色的球還有 \(k - 2\) 個沒有放,此時我們還剩 \(n \times k - (j - 1) \times (k - 1) - 1\) 個位置,所以再乘上 \(\dbinom{n \times k - (j - 1) \times (k - 1) - 1}{k - 2}\) 即可。
總結一下:
\[dp_{i, j} = dp_{i - 1, j} + dp_{i, j - 1} \times (n - j + 1) \times \dbinom{n \times k - (j - 1) \times (k - 1) - 1}{k - 2} \]本文來自部落格園,作者:xixike,轉載請註明原文連結:https://www.cnblogs.com/xixike/p/15680710.html