牛妹愛數列
他手裡有乙個長度為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。...