[贪心] aw3686. 移动序列(贪心+模拟+思维)

Posted Ypuyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[贪心] aw3686. 移动序列(贪心+模拟+思维)相关的知识,希望对你有一定的参考价值。

1. 题目来源

链接:3686. 移动序列

2. 题目解析

贪心。

顺序统计相邻两个 1 之间的 0 的个数即可。


时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( 1 ) O(1) O(1)


简单直接的方法:

#include <bits/stdc++.h>

using namespace std;

const int N = 55;

int n;
int a[N];

int main() {
    int T;
    cin >> T;

    while (T -- ) {
        cin >> n;
        for (int i = 0; i < n; i ++ ) cin >> a[i];
        
        int res = 0, l = 0, r = n - 1;
        while (!a[l]) l ++ ;
        while (!a[r]) r -- ;
        for (int i = l; i <= r; i ++ ) 
            if (!a[i])
                res ++ ;
        
        cout << res << endl;
    }
    
    return 0;
}

初始方法:

#include <bits/stdc++.h>

using namespace std;

const int N = 55;

int n;

int main() {
    int T;
    cin >> T;

    while (T -- ) {
        cin >> n;
        int res = 0, last = -1;
        for (int i = 0; i < n; i ++ ) {
            int x;
            cin >> x;
            if (x) {
                if (last != -1) res += i - last - 1;    // 相邻两个 1 间 0 的个数
                last = i;
            }
        }
        
        cout << res << endl;
    }
    
    return 0;
}

以上是关于[贪心] aw3686. 移动序列(贪心+模拟+思维)的主要内容,如果未能解决你的问题,请参考以下文章

移动序列

[贪心] aw3705. 子集mex值(贪心+模拟+模板题)

[模拟] aw3664. 数组补全(模拟+贪心+中位数+思维)

[构造] aw3764. 三元数异或(贪心+模拟)

[构造] aw3767. 最小的值(贪心+模拟)

[贪心] aw3627. 最大差值(贪心+aw周赛002_2)