[贪心] 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值(贪心+模拟+模板题)