CF1649A 题解

Jerrlee✅

2022-03-11 13:33:24

Solution

## 题意 给定一个一列的棋盘,`1` 代表可以走,`0` 代表不能走,你只能**跳一次**,越过一部分棋盘,其余情况只能向右移一格,求跳了几格(开头结尾都是 `1`,没有给出)。 ## 思路 注意到:只能**跳一次**,所以枚举 `0` 前面的 `1` 即可。这点很重要!很多人挂在这儿的! ## 代码 ```cpp #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 记录(洛谷)](https://www.luogu.com.cn/record/71038489) [AC 记录(CF)](https://www.luogu.com.cn/record/71038489)