1 条题解
-
0
前缀和。
设 为前 个数中 的数量, 为前 个数中 的数量。
那么, 就是后 个数中 的数量。
考虑以 为分界,求最小值,那么 即为以 为分界,需要改变的数量。
#include "bits/stdc++.h" using namespace std; int p[1919810], q[1919810]; int x[1919810]; int minn = 0x3f3f3f3f; int main() { int n; scanf ("%d", &n); for (int i = 1; i <= n; ++i) scanf ("%d", &x[i]); for (int i = 1; i <= n; ++i) { p[i] = p[i - 1] + (x[i] == 2); q[i] = q[i - 1] + (x[i] == 1); } for (int i = 1; i <= n; ++i) { int s1 = p[i - 1], s2 = q[n] - q[i - 1]; // cout<<s1<<' '<<s2<<' '<<i<<endl; minn = min(minn, s1 + s2); } minn = min(minn, p[n]); printf ("%d\n", minn); }
- 1
信息
- ID
- 265
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 31
- 已通过
- 18
- 上传者