思路:

对于题目中的一个查询(m, c),枚举子区间[l, r](0 <= l <= r < n),若该区间满足其中的非c字符个数x不超过m,则可以将其合法转换为一个长度为r-l+1的全c子序列,可以使用动态规划以O(n2)的复杂度计算,然而O(n2q)的复杂度还是太高了。于是先离线把26n中情况都计算出来,再打表即可。复杂度O(26n2+q)。

实现:

 #include <iostream>
#include <cstdio>
using namespace std; const int MAXN = ; int n, q, m, ans[][MAXN];
string s;
char c; int main()
{
cin >> n >> s;
for (int k = ; k < ; k++)
{
char tmp = 'a' + k;
for (int i = ; i < n; i++)
{
int cnt = ;
for (int j = i; j < n; j++)
{
if (s[j] != tmp) cnt++;
ans[k][cnt] = max(ans[k][cnt], j - i + );
}
}
for (int i = ; i < MAXN; i++)
ans[k][i] = max(ans[k][i], ans[k][i - ]);
}
cin >> q;
for (int i = ; i < q; i++)
{
scanf("%d %c", &m, &c);
printf("%d\n", ans[c - 'a'][m]);
}
}

最新文章

  1. C#开发微信门户及应用(28)--微信“摇一摇&#183;周边”功能的使用和接口的实现
  2. 最简单的JS图片轮播
  3. .NET中的GDI+
  4. JS_ECMA基本语法中的几种封装的小函数-2
  5. vc 实现打印功能
  6. ZOJ 2971 Give Me the Number;ZOJ 2311 Inglish-Number Translator (字符处理,防空行,strstr)
  7. CSS之剪切横幅
  8. There is a legend about a bird
  9. 一个简单的C#获取Session、设置Session类文件
  10. c语言之函数指针
  11. 2014 HDU多校弟八场H题 【找规律把】
  12. Less和Sass的使用
  13. 【css】盒子模型 之 弹性盒模型
  14. 给Linux RedHat7 设置启动终端的快捷键
  15. Model和ModelAndView
  16. HttpServletRequest 接口、HttpServletResponse 接口、请求转发与重定向
  17. 华为交换机以 LACP 模式实现链路聚合
  18. nodejs 利用zip-local模块压缩文件夹
  19. Spark中groupByKey、reduceByKey与sortByKey
  20. win7启动老是自动进入Boot Menu无法进入系统

热门文章

  1. MyBatis实体属性与表的字段不对应的解决方案
  2. SQL Server中迁移数据的几种方法
  3. ETL全量多表同步简述
  4. WinExec可能会引起消息重入
  5. golang 跨平台编译——go 在windows上编译Linux平台的程序(Cross Compilation from Windows to Linux/Ubuntu)
  6. JAVA 流程控制之选择语句
  7. 百度编辑器ueditor给上传的图片加入水印
  8. HDU 4923 Room and Moor(瞎搞题)
  9. S5P4418裸机开发系列教程--源代码下载
  10. Lexer and parser generators (ocamllex, ocamlyacc)