题目描述
You are given a string that is consisted of lowercase English alphabet. You are supposed to change it into a super-palindrome string in minimum steps. You can change one character in string to another letter per step.
A string is called a super-palindrome string if all its substrings with an odd length are palindrome strings. That is, for a string s, if its substring si…j satisfies j - i + 1 is odd then si+k = sj-k for k = 0,1,…,j-i+1.

输入
The fi rst line contains an integer T (1≤T≤100) representing the number of test cases.
For each test case, the only line contains a string, which consists of only lowercase letters. It is guaranteed that the length of string satisfies 1≤|s|≤100.

输出
For each test case, print one line with an integer refers to the minimum steps to take.

样例输入
3
ncncn
aaaaba
aaaabb

样例输出
0
1
2

提示
For second test case aaaaba, just change letter b to a in one step.

题目意思是说,给出一个字符串,问进行怎样的操作可以使得这个字符串变成超级回文串,而超级回文串的定义是随意选取任意一个长度为奇数的串,使得这个子串是回文串。

其实这道题存在一个小规律,拿第一个样例来说,如果取的位置是奇数,那么可以取出ncn这种串,想要这种串是回文,只需要第一个和第三个字符相同,放回原来的串里,就是奇数位置全部相等。同理,如果取出位置是偶数,那么可以取出cnc这类串,也是需要第一三个字符相同,放回原串,就有偶数位置的串相同。所以,只要整个字符串奇数位置全部相同,偶数位置全部相同,就能构成超级回文串,我们需要做的就是把给的字符串变成奇数全部相同偶数全部相同就好了。

AC代码

#include<iostream>
#include<stdio.h>
#include<memory.h>
using namespace std;
int main()
{int t;cin>>t;getchar();while(t--){string temp;int ans=0;cin>>temp;int vis[26]={0};int max=0;for(int i=0;i<temp.length();i+=2){vis[temp[i]-'a']++;if(max<vis[temp[i]-'a']) max=vis[temp[i]-'a'];}ans+=(temp.length()+1)/2-max;memset(vis,0,sizeof(vis));max=0;for(int i=1;i<temp.length();i+=2){vis[temp[i]-'a']++;if(max<vis[temp[i]-'a']) max=vis[temp[i]-'a'];}ans+=temp.length()-(temp.length()+1)/2-max;cout<<ans<<endl;}return 0;
}

Super-palindrome 模拟+思维相关推荐

  1. CodeForces-1016C Vasya And The Mushrooms(模拟+思维+前缀和的前缀和) 解题报告 Apare_xzc

    CodeForces-1016C Vasya And The Mushrooms(模拟+思维+二重前缀和 ) 解题报告 xzc 2019/4/7 这周周赛的C题:wyt学姐的恶意   这道题周赛的时候 ...

  2. 基础算法 —— 模拟思维

    [概述] 模拟,是根据实际问题建立模型,模拟实际按程序走一遍,最终求出答案. 思维,则是与逻辑思维有关,其需要针对题意.数据范围等抽丝剥茧抽离出有用的信息,从而得出一个结果. 对于一般的模拟,直接根据 ...

  3. 今夕何年 模拟 思维题

    今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了"今夕何夕,见此良人"的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个 ...

  4. 中石油训练赛 - 位置(模拟+思维)

    题目描述 由于晨晨还没有研究出核心算法,在游戏中总是被明明击败.晨晨拿出了杀手锏进行反击,精心设计了一个大型取数字求位置的难题:N*N( N是奇数)个地砖,每个上面写有一个编号,这些编号正好是1到N平 ...

  5. Codeforces Round #636 (Div. 3) D. Constant Palindrome Sum 思维 + 差分

    传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个显然的性质就是每组操作最多不会超过两次. 很容易想到一个很暴力的思路,就是枚举x∈[1,2∗k]x \in [1,2*k]x∈[1,2∗k] ...

  6. 过分的谜题 模拟+思维题

    题目描述 2060年是云南中医学院的百年校庆,于是学生会的同学们搞了一个连续猜谜活动:共有10个谜题,现在告诉所有人第一个谜题,每个谜题的答案就是下一个谜题的线索-成功破解最后一个谜题后,答案就是指向 ...

  7. ICPC Latin American Regional – 2017 B题(模拟+思维)

    ICPC Latin American Regional – 2017 Alan Curing is a famous sports programmer. He is the creator of ...

  8. F - Candle Box(模拟+思维)

    题目链接 题意:姐姐从4岁开始向盒子里放与年数相等的蜡烛,弟弟从3岁开始,两人各有一个盒子,但是最近一些年弟弟把自己的蜡烛误放在姐姐的盒子里.现给出姐姐和弟弟的年龄差,以及现在姐姐盒子里和弟弟盒子里的 ...

  9. CodeForces - 1343D Constant Palindrome Sum(思维+差分数组)

    题目链接:点击查看 题目大意:给出 n 个数,保证 n 是偶数,且每个数的范围都在 [ 1 , k ] 之间,现在问我们至少需要给多少个数重新赋值,使得可以满足条件: 所有的数的值域都在 [ 1 , ...

最新文章

  1. SD-WAN的体系结构是如何提高网络灵活性和效率?
  2. 细数网络上十七种安全威胁
  3. RocketMQ的Consumer详解之push和pull模式(长轮询)
  4. easyUI datebox 日期空间斜杠格式化。例如将日期空间中显示2017-03-13,改为2017/03/13...
  5. 关于区块链通证模型,你想知道的都在这
  6. 【代码规范】阿里巴巴代码规范
  7. 威佐夫博弈(C语言)
  8. 三行代码可视化神经网络特征图
  9. device unauthorized adbd cannot run as root in production builds insufficient permissions
  10. 昔日的手游大作,《无尽之剑》系列如今为何走向英雄末路?
  11. 学习布局(21)HTML5新标签
  12. QtCreator生成标准多行函数或者类详细注释
  13. 添加账号Linux命令,linux使用useradd命令添加用户
  14. IRP(I/O Request Package)详解
  15. Debian10 更换软件源 配置中文环境 安装中文输入法
  16. 使用numpy.sin()打印矢量/矩阵元素的正弦值 使用Python的线性代数
  17. 挥一挥衣袖,开始一段新的旅程
  18. SpringBoot+Kafka+ELK 完成海量日志收集(超详细)
  19. 小李学知识之redis相关(含redis面试题)
  20. canvas是什么牌子的包_CELINE的包包怎么样?

热门文章

  1. 秒味课堂Angular js笔记------$scope.$watch和$scope.$apply
  2. javaweb学习总结七(XML语言作用、语法)
  3. java txt 写入pdf_java学习笔记 读取pdf文件并写成txt文件输出
  4. 如何在小数点前补0,new DecimalFormat(##0.00);
  5. 1090 Highest Price in Supply Chain (25 分)(模拟建树,找树的深度)牛客网过,pat没过...
  6. webstorm的个性化设置settings
  7. BZOJ 2456: mode
  8. (转载)二进制与三进制的妙用
  9. android 串口开发第二篇:利用jni实现android和串口通信
  10. laravel 环境自编译过程