LYQの字符串

题目描述
一个字符串如果其所有长度为奇数的子串都是回文串那么就称这个字符串是奇回文串。

给你一个长度为N的字符串,假如让你最多可以修改k个字符,你的目标是求出最长的奇回文子串。がんばって

输入
第一行一个正整数K,如上所述。

第二行是一个字符串S。

1≤K≤N≤106。

S只包含小写字母。

输出
输出奇回文字串的最大长度。
样例输入
3
abbc
1
ab
1
abcdef
1
accca
3
abcd
样例输出
4
2
3
5
4
题目链接:LYQの字符串

思路:
根据题意的描述,如果这个字符串是奇回文串,那么这个字串中对于任何的i,都符合s[i]=s[i+2].所以奇数位上的字符都相同,偶数位同理。

如果有一个子串两个条件都满足那么这个子串就可以当做答案之一了,但是可以修改k个字符,因此答案还可以贪心增长。

我们单独考虑奇偶位上的字符,最优策略当然是保留出现次数最多的那个,我们可以用两点法(尺取?),每一步都找两种情况中出现频率最多的字符,这个可以用26*2的数组来统计,遍历一遍找出最优解即可。

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;const int maxn=1e6+10;
char str[maxn];
int vis[26][2];
int k;int main()
{while(~scanf("%d",&k)){memset(vis,0,sizeof(vis));scanf("%s",str);int len=strlen(str);int j=0,ans=0;//j表示区间结尾for(int i=0; i<len; ++i)//i表示区间开头{if(i>0)--vis[str[i-1]-'a'][(i-1)&1];int max_odd=0,max_even=0;for(int k=0; k<26; ++k){max_odd=max(max_odd,vis[k][1]);max_even=max(max_even,vis[k][0]);}int num=j-i-max_odd-max_even;while(num<=k&&j<len){++vis[str[j]-'a'][j&1];if(j&1)max_odd=max(max_odd,vis[str[j]-'a'][j&1]);elsemax_even=max(max_even,vis[str[j]-'a'][j&1]);num=j-i+1-max_odd-max_even;if(num<=k&&j-i+1>ans)ans=j-i+1;++j;}}printf("%d\n",ans);}return 0;
}

nyoj LYQの字符串(尺取法)相关推荐

  1. nyoj 133 子序列(尺取法+离散化)

    子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 给定一个序列,请你求出该序列的一个连续的子序列,使原串中出现的所有元素皆在该子序列中出现过至少1次. 如2 8 8 ...

  2. 51nod 1127 最短的包含字符串(尺取法)

    题目: 简单尺取法 代码: #include <iostream> #include <algorithm> #include <map> #include < ...

  3. 51nod1127 最短的包含字符串(尺取法)

    1127 最短的包含字符串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 

  4. ACM—各种模拟 总结(字符串,尺取法,数学问题)习题汇总

    目录 一.字符串模拟 二. 高精度计算 1. 回文数(高精度,进制转换) 三.数学问题模拟 四.尺取法(双指针法) 1.都说小镇的切糕贵 (尺取法,字符串) umi和弓道 五.奇怪的模拟 x的位数=l ...

  5. 【常用技巧精选】尺取法

    整理的算法模板合集: ACM模板 目录 1.反向扫描 1 找指定和的整数对 A.UVA1121 Subsequence B.POJ 3320 Jessica's Reading Problem C.l ...

  6. 算法篇之-----滑动窗口(尺取法)

    滑动窗口(尺取法 1. 介绍 2. 滑动窗口法的大体框架 4.最小覆盖子串 5.窗口数量 6.最小值 1. 介绍 滑动窗口法,也叫尺取法(可能也不一定相等,大概就是这样 =.=),可以用来解决一些查找 ...

  7. hdu 5672(尺取法)

    题意:有一个10<=长度<=1000000的字符串,仅由小写字母组成.求有多少子串,包含至少k(1<= k <= 26)个不同的字母. 解题思路:利用尺取法求符合条件的临界区间 ...

  8. B. Complete the Word (尺取法)

    题目链接:http://codeforces.com/problemset/problem/716/B 题目大意:字符串中的 '?' 可以用A->Z任何一个来替换 问能不能通过替换使字符串有一个 ...

  9. 【HDU - 5672】String(尺取法)

    题干: There is a string SS.SS only contain lower case English character.(10≤length(S)≤1,000,000)(10≤le ...

最新文章

  1. apache安装_Apache+PHP 安装 ---windows
  2. [UI自动化]:控制浏览器操作
  3. gin构建包含模板的二进制文件
  4. 《深入理解Spark:核心思想与源码分析》——3.10节创建和启动ExecutorAllocationManager...
  5. python财务预算分析_财码Python管理会计小实验—营运管理之多维度盈利能力分析...
  6. group by 将null放到其他_为什么我不建议你用去 “ ! = null quot; 做判空?
  7. 【性能优化】 之 HINTS 相关作业
  8. 增长黑客的秘诀在于数据的运用
  9. ArcGIS Engine开发之旅09--几何对象和空间参考
  10. Orleans 3.0 为我们带来了什么
  11. 解决E: 仓库 “http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic Release” 没有 Release 文件。
  12. ztree在刷新时第一个父节点消失_第一个关于中式菜谱的智能问答机器人小程序正式上线啦...
  13. Java的“影子克隆”和“深度克隆”
  14. 【codevs1048】石子归并
  15. 华为交换机抓包上传至PC分析
  16. JAVA Class6
  17. muma很可能在陪你玩游戏
  18. 云服务(腾讯云)的安全防范措施
  19. 【leetcode】算法题记录(111-120)
  20. 电视盒子系统是安卓还是yunOS,三招快速弄清

热门文章

  1. 光伏发电和光伏储能简单介绍
  2. div+css知识点文档
  3. 微信小程序连接emqtt
  4. sscanf gps 解析
  5. java集合List解析
  6. BeanDefinition用法
  7. java的 内省机制_Java 内省机制
  8. Java 反射与内省
  9. 应用性能管理-从操作系统做起
  10. 菲律宾圣安娜开hu--人工智能带领人类—从信息社会迈向智能社会,北京大学高文院士、黄铁军教授