1 solutions

  • 0
    @ 2025-3-9 21:58:53

    中位数处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