洛谷 題解 P1564 膜拜

2021-10-04 07:42:17 字數 692 閱讀 7080

先分析題目,是個很明顯的dp問題。很容易我們就可以想到dp[i]表示對於前i個人的最少分配的機房數。

下面我們開始找動態轉移方程。再仔細讀一遍題,老師只會把連續一段的同學分進乙個機房。這樣就簡單了。因為老師只會把連續一段的同學分進乙個機房,那麼對於第i位同學,我們就可以查驗第j位同學,是否能夠使得j~i都是同一位神牛的膜拜者,或者兩個神牛的膜拜者人數差不超過m。如果j滿足條件,此時分配的機房數就相當於前j個同學分配的機房數再加一。這個一就是第j個同學開始到第i個同學分配的乙個機房。這樣我們就有了動態轉移方程dp[i]=min(dp[i],dp[j]+1), j從1到i遍歷。

為了查驗的方便,我們可以用字首和。我們可以把乙代表的2處理為-1,這樣易於處理。

**如下:

#include

#include

#include

using

namespace std;

intmin

(int a,

int b)

intmain()

int dp[

2501];

dp[0]

=0;for

(int i =

1; i <= n; i++)}

cout << dp[n]

;return0;

}

線性dp 膜拜(洛谷 P1564)

題目描述 神牛有很多 當然 每個同學都有自己衷心膜拜的神牛.某學校有兩位神牛,神牛甲和神牛乙。新入學的 n 位同學們早已耳聞他們的神話。所以,已經衷心地膜拜其中一位了。現在,老師要給他們分機房。但是,要麼保證整個機房都是同一位神牛的膜拜者,或者兩個神牛的膜拜者人數差不超過 m。另外,現在 n 位同學...

P1564 膜拜(洛谷) 動態規劃

p1564 膜拜 這一題使用遞迴求解,考慮乙個區間 i,j 若從i到j可分在乙個機房,則直接返回,否則,遍歷每乙個點k,若 i,k 可分在乙個機房,則求 k 1,j 分組的數目最小值。求解過程中,已求的區間會被儲存起來。這裡固定n include include include define siz...

洛谷 P1101 題解

這道題可以用深搜 回溯 來寫,相信大部分人都是這麼想的,但是有些人可能在一些地方饒了半天,所以這裡就貼一下我的思路,個人覺得自己的很好懂,除了tx和ty那裡,但是tx和ty的那種用法對於輸出路徑的題目一般很實用 這個算是比較簡單的吧,題目裡給出了具體要找的字串,我們要做的就是對它進行8個方向的搜尋,...