Say No to Palindromes

2023-10-31

Say No to Palindromes

题意:

给一个长度为n的字符串,只包含abc三种字符,现在有m次询问,每次询问给出l,r,问l~r需要操作几次使得其不包括长度大于等于2的回文子串,每次操作可以改变一个字符,当然,只能在abc三种字符中改变。例如,a只能变成b或c。

思路:

因为要不存在长度大于等于2的回文子串,所以相邻的字符不能相同,又因为字符串只包含abc三种字符,所以不难发现,字符串只能由"abc"“acb”“bac”“bca”“cab”"cba"这六种子串组成,因此可以令f[j][i]表示前i个字符,当前匹配第j种子串,不合法的字符数,即需要的操作数,对于每次询问,枚举6种子串, ans = min(ans, f[j][r] - f[j][l - 1])即可。

代码:

/*************************************************************************
  > File Name: c.cpp
  > Author: Beans
  > Mail: 3112748286@qq.com 
  > Created Time: 2023/5/25 16:49:12
 ************************************************************************/
#include <iostream>
#include <algorithm>
#define int long long
#define endl '\n'

using namespace std;

const int maxn = 3e5 + 7;

int n, m;
string s[6] = {
    "abc", "acb", "bac", "bca", "cab", "cba"
};
int f[6][maxn];

void solve(){
    cin >> n >> m;
    string a;
    cin >> a;
    a = " " + a;
    for(int i = 1; i <= n; i ++ ){
        for(int j = 0; j < 6; j ++ ){
            f[j][i] = f[j][i - 1] + (a[i] != s[j][(i - 1) % 3]);
        }
    }
    while(m -- ){
        int l, r;
        cin >> l >> r;
        int ans = 0x3f3f3f3f;
        for(int i = 0; i < 6; i ++ )
            ans = min(ans, f[i][r] - f[i][l - 1]);
        cout << ans << endl;
    }
}

signed main(){
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int t = 1;
    //cin >> t;
    while(t -- )
        solve();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Say No to Palindromes 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • Rust 学习笔记之内存管理与生命周期

    内存管理是理解低级语言 和硬件相关的 的基础概念 低级语言没有提供自动内存管理的解决方案 例如内置垃圾回收器 它要求程序员自己在程序中管理内存 理解内存何时何地被创建和释放可以使得程序员构建出一个高效 安全的软件 然而 低级语言的大量错误也
  • 设计模式第八讲:观察者模式和中介者模式详解

    一 观察者模式 1 背景 在现实世界中 许多对象并不是独立存在的 其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变 例如 某种商品的物价上涨时会导致部分商家高兴 而消费者伤心 还有 当我们开车到交叉路口时 遇到红灯会
  • perl中CPAN的安装

    最近一直在学习nagios监控的知识 因为使用SNMP方式进行监测 而nagios的SNMP监测文件是pl结尾的perl脚本 所以需要安装CPAN 下面就安装CPAN的安装记录步骤如下 首先安装perl 可以通过yum方式进行安装 这样减少
  • STM32F0不同代码区跳转时总失败…这些操作你做对了吗?

    STMCU官网更新了一则实战经验文件 文章以STM32F0为例 就芯片内 从BOOT区跳转到APP区 从APP区跳转到新APP区 从APP区跳回BOOT区 的跳转问题做一些交流与介绍 更多信息请前往官网详情页 文章导读 对于STM32用户
  • java 顺序结构循环队列(源代码)

    1 import java util Arrays 2 public class LoopQueue
  • python模拟登入某平台+破解验证码

    概述 python模拟登录平台 遇见验证码识别 用最简单的方法selenium da破解验证码 来自动登录平台 详细 python用selenium xpath模拟登录 破解验证码 先随便找个小说平台用户登陆 书海小说网用户登陆 书海小说网
  • Golang-指针(pointer)

    1 概念 指针 指向内存地址的变量 指针用来存储变量的内存地址 Go 语言定义变量必须声明数据类型 因为不同数据类型的数据占用不同的存储空间 导致内存地址分配大小各不相同 所有指针只能存放同一类型变量的内存地址 指针分为两种 类型指针和切片
  • Android RecyclerView实现吸顶动态效果,详细分析

    文章目录 一 ItemDecoration 二 实现RecyclerView吸顶效果 1 实现一个简单的RecyclerView 2 通过ItemDecoration画分割线 3 画出每个分组的组名 4 实现吸顶效果 完整demo 链接 h
  • Python 数组的长度

    数组 Array 是有序的元素序列 若将有限个类型相同的变量的集合命名 那么这个名称为数组名 组成数组的各个变量称为数组的分量 也称为数组的元素 有时也称为下标变量 用于区分数组的各个元素的数字编号称为下标 数组是在程序设计中 为了处理方便
  • xss-labs-master 第六关到第十关通关

    要想看前面的五关请看xss labs master 第一关到第五关通关 Level 6 进入题目废话不多说 上来就是一个test测试一下会不会变化 可以看到提示信息有输入的内容 昨天我想了一个可以看到JS变化的代码 话不多说直接上
  • Navicat 链接 MongoDB

    安装完毕后修改配置文件 vim etc mongod conf 默认127 0 0 1为只允许本地连接 0 0 0 0为不限制 多个指定服务器用 连接 bind ip 0 0 0 0 启动 mongod 启动命令行 gt systemctl
  • Android关于libs,jniLibs库的基本使用说明及冲突解决

    最近在开发中遇到了一个问题 因为项目需要集成不同的sdk 相对应的也是不同的 so文件 针对libs中 so库的引入会遇到一些问题 比如要集成第三方NDK库 如果是在eclipse中 需要放到libs下对应库的目录 如果是在Android
  • OpenCV人脸识别C++源码分析

    include cv h include highgui h include
  • OSTaskStkInit():任务堆栈结构的初始化

    转载请注明出处 http dreamlcr cublog cn OSTaskStkInit 任务堆栈结构的初始化 OSTaskCreate 和OSTaskCreateExt 通过调用OSTaskStkInit 初始化任务的栈结构 因此 堆栈
  • Something old,something new,something borrowed,something blue

    Something old something new something borrowed something blue 有旧 有新 有借 有蓝 的婚礼习俗已经有好几百年的历史了 许多新娘在她们举行婚礼的当天都曾被问到是否已经备好了那些
  • 区块链落地的必需工具——预言机(Oracle)

    在 经济学人 杂志中对区块链的定义 区块链是信任的机器 区块链最大的核心创新在于去中心化的解决信任问题 不需要再去信任和依靠第三方机构的情况下进行价值转移 其中 智能合约起到了重要的作用 它是一套数字形式定义的合约 帮助合约参与方执行完成任
  • kali linux 安装python 3xx 以及多版本切换的方式

    简介 在渗透测试的时候 我们通常会用到不同的工具 这些工具可能对python的版本要求不一样 这个时候我们可能就需要在kali上面安装不同版本的python 以及灵活的切换python的版本 下载python3并安装 以python38来举
  • flutter 沉浸式状态栏

    padding new EdgeInsets all 0 0 加上这句就可以 具体原因不知 希望大佬解答
  • 你不知道的JavaScript----混合对象 ”类“

    目录 类的概念 类理论 类设计模式 类的机制 类的继承 类的多态 混入 显示混入 使用call绑定this 隐式混入 类的概念 类的设计模式 实例化 继承和 相对 多态 封装 把实现某个功能的代码进行封装处理 后期想实现这个功能 直接调用这
  • Say No to Palindromes

    Say No to Palindromes 题意 给一个长度为n的字符串 只包含abc三种字符 现在有m次询问 每次询问给出l r 问l r需要操作几次使得其不包括长度大于等于2的回文子串 每次操作可以改变一个字符 当然 只能在abc三种字