1. 程式人生 > 其它 >從0到1開展效能測試必備的效能測試要點-jmeter番外篇

從0到1開展效能測試必備的效能測試要點-jmeter番外篇

P1650 田忌賽馬

有很明顯的貪心思路,用田忌最爛的馬去懟齊王最好的馬。

由於田忌是有主動權的,所以我們直接讓齊王從優到劣出馬。

設計 \(dp\) 狀態:

  1. 普通 \(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\)

    匹馬懟上之後贏/輸的錢數。

  2. 區間 \(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