南外聯測 191112 作題總結

Game

重述題意:

有這樣一個遊戲, 這個遊戲裏有n只怪, 每隻怪血量 \(a_i\)數組

每次攻擊時, 玩家選擇一個數\(p\), 使得數據結構

for(int i = p; i <= min(n, k+p-1); i++) {
    a[i] -= k+p-i;
}

求最小的k, 使得玩家能夠經過m次攻擊使得全部\(a[i] < 0\)優化

數據範圍:spa

50% data: \(n \le 10^3\).net

100% data: \(n \le 10^6, m \le 1e9, a[i] \le 1e9\)調試

首先明顯 k 具備可二分性。code

對於每個k,操做的方法只有: 對\(a_i\)數列順序「施加攻擊」。blog

可是怎麼模擬這個操做呢?畢竟每次都區間減等差數列的數據結構 很是高級,並且難寫遊戲

(固然寫好暴力區間減就50分到手 再一次說明寫暴力重要性get

形式化的講, 每次攻擊\(a_i\) 須要施加 \(l = \lceil \frac{a_i}{k} \rceil\) 次攻擊, 影響一直波及到 \(a_{i+k-1}\)

考慮差分。 定義 \(\Delta a_i = a_{i+1} - a_i\)

則有: \(\Delta a_i ' = \Delta a_i + l\) 。 因此 區間加等差數列等於區間差分加上一個固定的數

而對\(\forall \Delta a_x, \ i \le x\le i+k-1\), 都有上式成立。 故對每一個操做,打上一個「區間減法」標記就能夠了。

(其實這個標記的真正含義是二階差分

考後總結

  1. 50分暴力必需要寫。 寫了能夠對拍。
  2. 二分時注意 解區間開閉性和邊界, 二分其實有不少坑的。重點要記住, 二分區間一致是一個 半開半閉 區間。
  3. 數組未初始化, 調了40分鐘(哭哭哭。
  4. 其實k = 0的狀況是存在的, 可是不能寫進二分的斷定裏(如果讓k = 0 ,那麼判斷時會除以0)
    1. 因此k=0狀況要特判。

Friend

百度地圖的實時路況 簡化版。

考後感想

特別要注意: 這張圖是有重邊和自環的。

我沒有給邊判重,得20分

判重以後, 滿分!!

Revenge

重述題意:

有一顆n個點的樹, 每一個點有一個顏色,總共有c種顏色。求最短的樹上路徑(一個點最多通過一次),使得路徑上每種顏色的點都有。

60% data: \(n \le 2000\)

100% data : \(c\le 9, n \le 20000\)

這道題我在考試時想到的思路是這樣的(類比求樹的直徑):

\[ \begin{align} 動態規劃:\\ &f(i,sta) = 以點i爲根,通過點集爲sta的最短路徑長度&\\ &g(i,sta) = 以點i爲根,通過點集爲sta的次短路徑長度 \end{align} \]
可是其實這樣沒法保證最短路徑和次短路徑不相交 . 保證 不相交 纔是最重要的.

可是我卻寫了這個錯誤的解法. 因此最後沒時間調試, 我沒分了.

考後感想

其實, 經過n次\(dfs\)就能夠獲得60分.

因此, 一個方法務必想清楚爲何正確!!不能肯定正確的話, 先寫個暴力.

100分作法:

動態規劃: 仔細看, 定義改爲了 \(f(i,sta) = 以點i爲根,通過點集至少爲爲sta的最短路徑長度\)

轉移時, 能夠優化:
\[{DP:} \begin{align} \\ &ans =\min _s f(u, s) + f(v,s')\\ &f(u, s+c_u) = \min \{f(v, s+c_u) + 1, f(u, s)\} \end{align}\]

複雜度 \(O(n*2^n)\)

注意!!

\(f(i, sta)\)\(sta\)至少 通過點集爲sta的最短路徑長度

這個至少 很重要。 不然, 這道題就須要用\(SOSdp\), 一種\(FWT\)的變體來更新ans了。

這裏有一篇\(SOSdp\)的博客: https://blog.csdn.net/weixin_38686780/article/details/100109753

(原汁原味英文版: https://codeforces.com/blog/entry/45223

不過如今就先不學了。

怎麼處理這個 至少 呢? (不用枚舉子集)

再加一個狀態轉移方程: \(f_{u, s} = \min \{ f_{v,s} + 1, f_{u, s}\}\)就能夠了。(有點意思!)

這樣, 對於任意一條路徑, 全部可能的 忽略某些點 的方案都會被統計到。(畢竟「至少」 就是要 忽略某些在路徑上的點)

相關文章
相關標籤/搜索