985有一个长度为n的0-1串,已知他最多可以修改k次(每次修改一个字符即0->1 或者 1->0),他想知道连续的全1子串最长是多少。
一个整数代表可以得到的最大长度。
hpu
#include<stdio.h> int main() { int t,n,k; char st[100010]; int dp[100010]; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); scanf("%s",st); int l=1; for(int i=0;i<n;i++) if(st[i]=='0') dp[l++]=i+1; dp[0]=0; dp[l]=n+1; if((l-1)<k) printf("%d\n",n); else { int max=0; for(int i=0;i<l-k;i++) { if(max<dp[i+k+1]-dp[i]) max=dp[i+k+1]-dp[i]; } printf("%d\n",max-1); } } return 0; }