Solution
只能跳一次,那么说明我们只可能通过一次大跳来跳过所有含水格子。大跳的代价与距离成正比,所以大跳的距离越小越好。
那么,大跳就从最左边的水格子前起跳,跳到最右边的水格子后即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include<bits/stdc++.h> using namespace std;
int main() { int t; cin>>t; while(t--) { int n; cin>>n; int k,ans=n+1,ans2=0; for(int i=1;i<=n;i++) { cin>>k; if(k==0) {ans=ans==n+1? i-1:ans;ans2=i+1;} } ans2=n-ans2; if(ans==n+1) cout<<0<<endl; else cout<<(n-ans-ans2)<<endl; } return 0; }
|