枚举分界线的位置,不要忘了最左侧的分界线
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> using namespace std; const int maxn = 30005; int main() { //freopen("D:\\t.txt", "r", stdin); int n; scanf("%d", &n); int tot1 = 0; int left1[maxn]; for (int i = 0; i < n; i++) { int a; scanf("%d", &a); if (a == 1) tot1++; left1[i] = tot1; } int ans = tot1; for (int i = 0; i < n; i++) { if (ans > i + 1 - left1[i] + tot1 - left1[i]) ans = i + 1 - left1[i] + tot1 - left1[i]; } printf("%d\n", ans); return 0; }