線性dp 牛妹愛數列

2022-02-13 18:20:48 字數 679 閱讀 4452

題目大意

有乙個長度為n的序列a,保證它是乙個01序列,並執行以下兩種操作:

1.單點修改:將位置x上的數翻轉(0變1,1變0);

2.字首修改:將位置1~x上的數翻轉(每個數都0變1,1變0)。

他現在想要最小化翻轉次數,使得數列上的所有數都變為0。

資料保證\(1\le n\le 10^5,0\le a_i\le 1\)。

分析首先我們大致判斷這個乙個dp,通過觀察此題應該是乙個線性dp

通過觀察資料範圍我麼可以推斷出狀態大致應該是f(n , c) / f(n) 維度的狀態表示

其中c為乙個常數。

狀態表示

f(i , 0/1) 表示前i位修改位全部為 0 / 1 的最小消耗代價

狀態計算

牛妹愛數列(動態規劃 dp)

題目描述 牛妹正在玩乙個數列 他手裡有乙個長度為n的序列a,保證它是乙個01序列,並執行以下兩種操作 1.單點修改 將位置x上的數翻轉 0變1,1變0 2.字首修改 將位置1 x上的數翻轉 每個數都0變1,1變0 他現在想要最小化翻轉次數,使得數列上的所有數都變為0。輸入描述 第一行,輸入乙個數n。...

NowCoder 練習 牛妹愛數列(DP)

牛妹愛數列 他手裡有乙個長度為n的序列a,保證它是乙個01序列,並執行以下兩種操作 他現在想要最小化翻轉次數,使得數列上的所有數都變為0。輸出最小翻轉次數 示例1 輸出 min dp n 0 dp n 1 1 include using namespace std pragma gcc optimi...

牛客 牛妹愛數列 K K K

思路 剛開始考慮的是貪心,讓sum 0 遇到1就 0則 找到sum最大的時候,在這個時候反轉一次,這樣是會漏情況的 如 0 0 0 0 0 1 1 1 可以把0變為1 再全部變為0 那麼只能考慮dp了 首先要確定dp的意義,根據要求的 肯定是要dp n 為前n為都為0的 那麼考慮把dp i 定為 前...