NowCoder 練習 牛妹愛數列(DP)

2021-10-23 17:48:53 字數 717 閱讀 2711

牛妹愛數列

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

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

輸出最小翻轉次數

示例1:

輸出 min(dp[n][0], dp[n][1]+1);

#include

using

namespace std;

#pragma gcc optimize(2)

#define ios std::ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);

#define ll long long

const

int max =

1e5+3;

const

int mod =

1e9+7;

int a[max]

, dp[max][2

], n;

intmain()

else

}int tmp =

min(dp[n][0

], dp[n][1

]+1)

; cout << tmp << endl;

return0;

}

蒟蒻乙隻,歡迎指正

牛客 牛妹愛數列 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 定為 前...

線性dp 牛妹愛數列

題目大意 有乙個長度為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 ...

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

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