Jerrlee's blog

Jerrlee's blog

CF1649A 题解

posted on 2022-03-11 13:33:24 | under 题解 |

题意

给定一个一列的棋盘,1 代表可以走,0 代表不能走,你只能跳一次,越过一部分棋盘,其余情况只能向右移一格,求跳了几格(开头结尾都是 1,没有给出)。

思路

注意到:只能跳一次,所以枚举 0 前面的 1 即可。这点很重要!很多人挂在这儿的!

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        int ans1=-1,ans2=-1,a[n+1];
        for(int i=0;i<n;i++) cin>>a[i];
        for(int i=0;i<n;i++) if(!a[i]){ans1=i-1;break;}
        for(int i=n-1;i>=0;i--) if(!a[i]){ans2=i+1;break;}
        cout<<ans2-ans1<<endl;
    }
}

AC 记录(洛谷)

AC 记录(CF)