CF1466-C. Canine poetry

题意:

给出一个字符串,这个字符串里面可能会包含多个回文子字符串。现在你可以任意修改这个字符串中的任意一个字符任意次数,问你最少多少操作数之后这个字符串中所有的回文子字符串的长度不超过1。


思路:

对于一个字符串,如果它想要是一个回文字符串,那么它需要先保证它内部是一个回文字符串,像\(abcdhedcba\)这个字符串,他非常像回文字符串,但是它最中间的部分不能构成回文字符串,所以它外面的字符无论是什么也就都没有意义了。现在我们就根据这个性质,只扫描构成长度为2或3的回文字符串然后将它破坏掉,那么它可能所在的更长的回文字符串也就被破坏了。

破坏字符串的时候,我们需要将原有的字符替换掉,但是这会引发一个新的问题:如果替换的字符又和其他字符构成了新的回文字符串,而每个字符只能被替换一次,所以显然这个字符不能随意替换。我们考虑一下,如果当前的字符串是ai,那么ai只要在替换前后不和ai-1,ai-2,ai+1,ai+2构成回文字符串就可以了,而ai-1,ai-2,ai+1,ai+2最多只包含4个字符,所以一定会有符合的字符,所以下面代码我用一个\(vis\)数组来记录一个字符是否被修改过,如果修改过那么这个字符无论如何都不可能被用来构成回文字符串。


AC代码:

#include <cstdio>
#include <cstring>
#include <iostream> const int maxn = 100005; char s[maxn], vis[maxn]; int main() {
int T;
scanf("%d", &T);
while (T--) {
scanf("%s", s);
int len = strlen(s);
int ans = 0;
memset(vis, 0, sizeof vis);
for (int i = 1; i < len; i++) {
bool flag = false;
if (s[i] == s[i - 1] && !vis[i - 1]) {
flag = true;
} else if (i > 1 && s[i] == s[i - 2] && !vis[i - 2]) {
flag = true;
}
ans += flag;
vis[i] = flag;
}
printf("%d\n", ans);
} return 0;
}

CF1466-C. Canine poetry的更多相关文章

  1. CodeForces Gym 100500A A. Poetry Challenge DFS

    Problem A. Poetry Challenge Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...

  2. UVa 10361 Automatic Poetry

    Automatic Poetry Input: standard input Output: standard output Time Limit: 2 seconds Memory Limit: 3 ...

  3. UVA10361 - Automatic Poetry

    “Oh God”, Lara Croft exclaims, “it’s one of these dumb riddles again!” In Tomb Raider XIV, Lara is, ...

  4. Intelligent Poetry

    Readme: Creat poems. import re import random from collections import Counter def Creat_Poem(number): ...

  5. Python Poetry 学习和使用

    Poetry是啥? 是一个Python虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布.可以用来管理python库和python程序. 安装Poetry curl -sSL https ...

  6. LG5196 「USACO2019JAN」Cow Poetry 背包+乘法原理

    \(\mathrm{Cow Poetry}\) 问题描述 LG5196 题解 因为每句诗的长度一定是\(k\),所以自然而然想到背包. 设\(opt[i][j]\)代表到第\(i\)位时,结尾为\(j ...

  7. mac使用poetry

    安装 为了防止依赖冲突不推荐使用pip的方式直接安装,当然你也可以这样做 curl -sSL https://raw.githubusercontent.com/sdispater/poetry/ma ...

  8. Windows下使用poetry和pyproject.toml

    0. 题引 为什么要使用poetry? 因为想使用pyproject.toml,并通过pyproject.toml进行依赖包管理,目前pip还不支持,所以poetry是首选 为什么要使用pyproje ...

  9. Python开发篇——构建虚拟Python开发环境(Conda+Poetry)

    前言 之前虽略有提及Python,但是没有实际地写点料.惭愧,惭愧,所以这次先起个头,讲讲如何构建虚拟Python开发环境.相信之前看过我博客的人可能会想:博主不会又要聊聊Docker吧?放心,不会. ...

随机推荐

  1. 【MySQL】Last_SQL_Errno: 1594Relay log read failure: Could not parse relay log event entry...问题总结处理

    备库报错: Last_SQL_Errno: 1594 Last_SQL_Error: Relay log read failure: Could not parse relay log event e ...

  2. 多视图子空间聚类/表示学习(Multi-view Subspace Clustering/Representation Learning)

    多视图子空间聚类/表示学习(Multi-view Subspace Clustering/Representation Learning) 作者:凯鲁嘎吉 - 博客园 http://www.cnblo ...

  3. PW2320芯片N沟道增强型MOSFET

    PW2320采用先进的沟道技术,以提供优良的RDS(ON),低栅电荷和电压门极电压低至2.5V时工作.该装置适合用作电池保护或在其他开关应用中. 特征 VDS=20V ID=8A RDS(开)< ...

  4. ECharts特效-折线图上一个光点来回移动

    参考地址:https://www.makeapie.com/editor.html?c=xxxcG6NGk0 效果图打开上面的网址就可以看到. 核心代码如下,该效果实现的难点是数据的封装,还有eval ...

  5. 阿里云VOD(三)

    一.视频播放器 参考文档:https://help.aliyun.com/document_detail/125570.html?spm=a2c4g.11186623.6.1083.1c53448bl ...

  6. 如何安装快速 Docker 和 Docker-Compose 服务

    最近由于个人在大家基于 Docker  的.企业级的CI/CD 环境,所以要安装 Docker 和 Docker-Compose ,这也算是一个学习过程,就把整个过程记录下来,便于以后查询. 测试环境 ...

  7. k8s-jenkins持续发布tomcat项目

    k8s-jenkins持续发布tomcat项目 一.需求 这个实验前期后后搞了很久(公司经常插一些别的事过来,然后自己比较懒,再加上自己知识不够扎实).二进制部署完k8s集群就开始做jenkins持续 ...

  8. 夯实基础系列四:Linux 知识总结

    前言 前三节内容传送门: 夯实基础系列一:Java 基础总结 夯实基础系列二:网络知识总结 夯实基础系列三:数据库知识总结 现在很多公司项目部署都使用的是 Linux 服务器,互联网公司更是如此.对于 ...

  9. jmeter跳过验证码登录配置:通过手动添加 Cookie 跳过带验证码的登录接口

    目录 一.基本配置 二.HTTP请求默认值 三.HTTP信息头管理器 四.HTTP Cookie管理器 五.线程组下接口设置 一.基本配置 二.HTTP请求默认值 (1)jmeter的设置: (2)设 ...

  10. Java AQS的原理

    首先可以看:  http://ifeve.com/java-special-troops-aqs/ 再看  <Java并发编程的艺术>第5章 核心:同步器的acquire方法: 首先调用自 ...