每次做cf基本就前两个,第三个就死掉了。。
这个题呢,看到题还是有有点想法的。先想dp。。做不出来。后来想到尺取法。。结果错了。。。还是去看了题解。。以后还是先写c题。。。
参考:http://blog.youkuaiyun.com/qq_33183401/article/details/72906503
尺取法还是很好想的
#include <cstdio>
#include <cstring>
#define max(a,b) a>b?a:b
const int MAXN = 1510;
char str[MAXN];
int n,m,q,r,len,res;
char c;
int main()
{
int l,r;
scanf("%d",&n);
scanf("%s",str);
scanf("%d",&q);
while(q--)
{
res = 0;
len = 0;
l = 0;
scanf(" %d %c",&m,&c);
for(r = 0; r < n; ++r)
{
if(str[r] != c)
++len;
while(len > m)
{
if(str[l] != c) --len;
++l;
}
res = max(res,r-l+1);
}
printf("%d\n",res);
}
return 0;
}