CF1466-C. Canine poetry
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的更多相关文章
- CodeForces Gym 100500A A. Poetry Challenge DFS
Problem A. Poetry Challenge Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...
- UVa 10361 Automatic Poetry
Automatic Poetry Input: standard input Output: standard output Time Limit: 2 seconds Memory Limit: 3 ...
- UVA10361 - Automatic Poetry
“Oh God”, Lara Croft exclaims, “it’s one of these dumb riddles again!” In Tomb Raider XIV, Lara is, ...
- Intelligent Poetry
Readme: Creat poems. import re import random from collections import Counter def Creat_Poem(number): ...
- Python Poetry 学习和使用
Poetry是啥? 是一个Python虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布.可以用来管理python库和python程序. 安装Poetry curl -sSL https ...
- LG5196 「USACO2019JAN」Cow Poetry 背包+乘法原理
\(\mathrm{Cow Poetry}\) 问题描述 LG5196 题解 因为每句诗的长度一定是\(k\),所以自然而然想到背包. 设\(opt[i][j]\)代表到第\(i\)位时,结尾为\(j ...
- mac使用poetry
安装 为了防止依赖冲突不推荐使用pip的方式直接安装,当然你也可以这样做 curl -sSL https://raw.githubusercontent.com/sdispater/poetry/ma ...
- Windows下使用poetry和pyproject.toml
0. 题引 为什么要使用poetry? 因为想使用pyproject.toml,并通过pyproject.toml进行依赖包管理,目前pip还不支持,所以poetry是首选 为什么要使用pyproje ...
- Python开发篇——构建虚拟Python开发环境(Conda+Poetry)
前言 之前虽略有提及Python,但是没有实际地写点料.惭愧,惭愧,所以这次先起个头,讲讲如何构建虚拟Python开发环境.相信之前看过我博客的人可能会想:博主不会又要聊聊Docker吧?放心,不会. ...
随机推荐
- gears-绕过rbash
0x00 信息收集 0x01 smb攻击 crunch 生成密码的一个软件 @%%,这个是给的密码参数. crunch 4 4 -t @%%, -o words 最小4位,最长 4位 fcrackzi ...
- kafka安装流程
本文是作者原创,版权归作者所有.若要转载,请注明出处. 安装前的环境准备 1.由于Kafka是用Scala语言开发的,运行在JVM上,在安装之前需要先安装JDK(省略) 2.kafka依赖zookee ...
- go语言循环变量
阅读go语言圣经第五章第六节介绍到了捕获迭代变量 package main import ( "fmt" ) func main() { var lis []func() for ...
- vagrant up报错【io.rb:32:in `encode': "\x95" followed by "\"" on GBK (Encoding::InvalidByteSequenceError)】
vagrant up报错[io.rb:32:in `encode': "\x95" followed by """ on GBK (Encoding: ...
- Vitis下载安装尝试
Vitis下载安装记录 一.下载安装 文章目录 一.下载安装 提示:以下是本篇文章正文内容,下面案例可供参考 一.下载安装 首先本次下载主要使用的是linux系统,所以我们先看一下Vitis支持的li ...
- 15V转5V转3.3V转3V芯片,DC-DC和LDO
15V电压是属于一般电压,降压转成5V电压,3.3V电压和3V电压,适用于这个电压的DC-DC很多,LDO也是有可以选择的.LDO芯片如PW6206,PW8600等.DC-DC芯片如:PW2162,P ...
- 图像分类学习:X光胸片诊断识别----迁移学习
引言 刚进入人工智能实验室,不知道是在学习机器学习还是深度学习,想来他俩可能是一个东西,查阅之后才知道这是两个领域,或许也有些交叉,毕竟我也刚接触,不甚了解. 在我还是个纯度小白之时,写下这篇 ...
- flume agent的内部原理
flume agent 内部原理 1.Source采集数据,EventBuilder.withBody(body)将数据封装成Event对象,source.getChannelProcessor( ...
- 请不要继续将数据库称为 CP 或 AP - 掘金 https://juejin.im/post/6844903878102614030
请不要继续将数据库称为 CP 或 AP - 掘金 https://juejin.im/post/6844903878102614030
- Django runserver 默认多线程 监听文件变动
django-admin and manage.py | Django documentation | Django https://docs.djangoproject.com/en/3.0/ref ...