移动序列

Posted Treasure_lee

tags:

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

移动序列

AcWing 3686
https://www.acwing.com/problem/content/3689/
贪心

思路

如图:四段连续的1,中间隔3个0.

从最左段开始,如果向左移,则中间隔4个0.如果向右移,两段连续1合并成一段,中间隔2个0.

如果从中间段开始,左移或右移,中间隔着的0个数不变。

所以我们只要找从第一个1到最后一个1中间隔多少个0.

代码

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 55;
int T,n;
int a[N];


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

以上是关于移动序列的主要内容,如果未能解决你的问题,请参考以下文章

导航抽屉活动:在按钮单击时从片段移动到片段

c# 获取移动硬盘信息监听移动设备的弹出与插入事件

如何在 ViewPager 中从 Activity 移动到 Fragment?未找到片段 ID 的视图

解决移动端报错:Unable to preventDefault inside passive event listener due to target being treated as……(代码片段

设置onclick侦听器在android中无法从一个片段移动到另一个活动[重复]

移动椭圆的板绘图代码