1 solutions
-
0
中位数处1不动,其他的1向中间移动即可
具体证明有点类似中位数定理
void s() { int n; cin >> n; string s; cin >> s; vector<int> a; for(int i = 0; i < n; i++) { if(s[i] == '1') { a.push_back(i); } } int mid = a.size() / 2; int ans = 0; for(int i = 0; i < a.size(); i++) { ans += abs(a[mid] - (mid - i) - a[i]); } cout << ans << '\n'; }
- 1
Information
- ID
- 7011
- Time
- 200ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- # Submissions
- 104
- Accepted
- 18
- Uploaded By