4个月前做的一道题,当时不知道为什么,写了一个bfs,直接就超时了。
现在再看这个题目,发现就是一个简单的贪心,每次走最远即可。
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N=110; 4 char ss[N]; 5 vector<int>pos; 6 int main() 7 { 8 int n,d; 9 while(scanf("%d%d",&n,&d)!=EOF) 10 { 11 scanf("%s",ss+1); 12 pos.clear(); 13 for(int i=1;i<=n;i++) 14 { 15 if(ss[i]=='1') 16 pos.push_back(i); 17 } 18 int p=1,ans=0; 19 bool f=0; 20 for(int i=1;i<pos.size();i++) 21 { 22 f=0; 23 while(pos[i]-p<=d) 24 { 25 i++; 26 f=1; 27 } 28 if(!f) 29 break; 30 i--; 31 p=pos[i]; 32 ans++; 33 } 34 if(!f) 35 printf("-1 "); 36 else 37 printf("%d ",ans); 38 } 39 return 0; 40 }