题意略。
思路:
尺取法,依然是要利用之前的结果。
感觉时间复杂度太高了,竟然也过了。
#include<bits/stdc++.h> using namespace std; const int maxn = 1505; char str[maxn],temp[5]; int n,q; int main(){ scanf("%d",&n); scanf("%s",str); scanf("%d",&q); for(int i = 0;i < q;++i){ int m,mx = 0; scanf("%d%s",&m,temp); for(int r = 0,l = 0;r < n;++r){ if(str[r] == temp[0]){ mx = max(mx,r - l + 1); continue; } else{ while(m == 0){ ++l; if(str[l - 1] != temp[0]) ++m; } --m; mx = max(mx,r - l + 1); } } printf("%d\n",mx); } return 0; }