Super-palindrome
时间限制: 1 Sec 内存限制: 128 MB
提交: 595 解决: 231
[提交] [状态] [命题人:admin]
题目描述

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.

题目大意:先输入一个数n,以下n行每行输入一个字符串,要求其每一个字串均是回文串,问最少需改变几个字母才能达到这种效果。

解题思路:因为需要每个字串均是回文串,所以可知最终改得的回文串一定是两个字母交替的形式,例如ababab,所以只需要找到实现这种情况的最小操作数即可,即只需要记录一下在奇数位上出现最多的字母出现的次数,把其他奇数位的改为此字母,在偶数位上同理。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#incde <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
map<char,int> m1,m2;
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);int n;cin>>n;string s;while(n--) {cin>>s;m1.clear();m2.clear();int ma1=0,ma2=0;for(int i=0;i<s.size();i++) {if(i%2==0) {m1[s[i]]++;if(m1[s[i]]>ma1) {ma1=m1[s[i]];}}else {m2[s[i]]++;if(m2[s[i]]>ma2) {ma2=m2[s[i]];}}}cout<<s.size()-ma1-ma2<<endl;}return 0;
}

Super-palindrome【字符串+思维】相关推荐

  1. POJ 1159 Palindrome(字符串变回文:LCS)

    POJ 1159 Palindrome(字符串变回文:LCS) http://poj.org/problem? id=1159 题意: 给你一个字符串, 问你做少须要在该字符串中插入几个字符能是的它变 ...

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

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

  3. COW(暴力枚举) + 玄神的字符串(思维题) + Duplicate Strings(字符串思维题)

    '只要坚持就会成功--2022.1.22' 1.COW,这道题的大概意思就是求出一个字符串中一共有多少个COW,不要求连续. 思路: 暴力枚举,枚举每一个包含O,看这个O和前后的C,W结合能组成多少个 ...

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

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

  5. c语言字符串文库总结,C语言字符串.ppt

    C语言字符串.ppt ACM程序设计,福州大学至诚学院 冯新,第四讲,字符串处理,常用函数介绍,复制,char* strcpy char *s1, const char *s2; 将字符串s2复制到s ...

  6. 2.1.3 字符与字符串

    目录 思维导图 ASCLL码 汉字 字符串 思维导图 ASCLL码 汉字 字符串

  7. NSString / NSMutableString 字符串处理,常用代码 (实例)

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  8. C语言字符型PPT,《C语言字符串》PPT课件.ppt

    <<C语言字符串>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<C语言字符串>PPT课件.ppt(30页珍藏版)>请在装配图网上搜索. 1.A ...

  9. 王道计算机考研 计算机组成原理 第二章、数据的表示和运算

    1.进位计数制 各种进制的常见书写方式 十进制 转为 任意进制 真值和机器数 思维导图 2.BCD码(大纲已删) 3.字符与字符串 ASCII码 汉字的表示和编码 字符串 思维导图 4.奇偶校验码(计 ...

最新文章

  1. 让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题
  2. 用Python分析了1w四六级数据,教你如何通过四六级!
  3. IOS开发 ARC forbids explicit message send of 'autorelease'错误解决办法
  4. 利用OpenCV实现图像拼接的代码
  5. 将HTML5 Canvas的内容保存为图片
  6. linux中普通用户用友所有权限,linux文件的特殊权限
  7. 在线SVG转换,支持SVG to PNG、SVG to JPEG、SVG to WEBP 图片转换操作-toolfk程序员在线工具网
  8. elasticsearch的父子_ElasticSearch 学习记录之父子结构的查询
  9. “刀片嗓”“水泥鼻”“咳出肺”可以这样缓解!
  10. vue + iview + less 定制主题色
  11. 安卓android记单词软件
  12. uniapp textarea编辑保留空格换行
  13. 一、编程基础之计算机基础知识
  14. ip地址转换成16进制long
  15. javascript中的:DOM对象
  16. C++围棋小游戏1.1
  17. Android 从代码中打开淘宝和亚马逊、facebook、Message
  18. Macos Catalina 10.15.4 (19E287) 更新后外接显示器显示BUG
  19. 我的世界java版盔甲架_我的世界:知道了这些盔甲架的用法,你就是今年最靓的仔!...
  20. Linux中IPsec的实现--(实例)

热门文章

  1. Python map 函数 -Python零基础入门教程
  2. ret2dlresolve归纳
  3. Java自动化获取页面主题_基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍
  4. 配置文件存int类型_Redis详解(五)------ redis的五大数据类型实现原理
  5. java se入门_java SE 入门之运算符(第三篇)
  6. mariadb mysql表_mysql/mariadb学习记录——创建删除数据库、表的基本命令
  7. anylogic中如何构建复杂网络_如何对复杂网络建模所需要的数据进行预处理
  8. edges2shoes数据集下载_edges2cats
  9. redis java应用_redis在JAVA的简单应用
  10. Eclipse 版本升级:如何不卸载旧版本 Eclipse 实现在线升级到最新版本?