洛谷 P11190

news/2025/11/3 22:18:27/文章来源:https://www.cnblogs.com/xhr0817-blog/p/19188445

给定长度为 \(n\) 的字符串 \(s\),问至多能将 \(s\) 划分成多少个子序列,使得每个子序列都不是回文串?(输出方案)

特殊性质 A:每个字符出现次数不超过 \(\frac{n}{2}\)

特殊性质 B:只有 a, b 两种字符。

这个题没有特殊性质提示感觉有紫。

特殊性质 A

没有绝对众数,所以可以尝试把两个不同的字符丢到一个回文串,答案为 \(\lfloor \frac{n}{2} \rfloor\)

构造有个经典 trick,将 \(s\) 重排,颜色相同的丢一起,然后 \((i, i + n / 2)\) 形成一个子序列。\(n\) 是奇数丢到 \((1, 1 + n / 2)\) 里即可。

特殊性质 B

不妨设 a, b 中多的为 a,其数量 \(c_a\) 达到了 \(\lfloor \frac{n}{2} \rfloor\)

显然每个字符串里都要有 b,所以答案至多 \(c_b\)

考虑如何达到这个上界,有两种显然不是回文串的字符串 aa...abbaa...a。设 b 的出现位置是 \(p_1, p_2, \dots p_{c_b}\)

  • 对于 \(1 < i < c_b\)\(p_{i - 1} + 1 \sim p_i\) 组成一个子序列。
  • 对于 \(i = 1\),让 \(p_1, p_{c_b - 2} + 1 \sim p_{cb - 1} - 1, p_{cb - 1} + 1 \sim n\) 组成一个子序列。
  • 对于 \(i = c_b\),让 \(1 \sim p_1 - 1, p_{c_b}\) 组成一个子序列。

这样构造能使得每个字符串都是前面的两种形式。对于那些只有一个字符 b 的子序列,从别的子序列挪一个 a 形成 abba

正解

把两部分结合起来,如果有绝对众数,把绝对众数视为 a,剩下的视为 b,做特殊性质 B。否则特殊性质 A。

时间复杂度:\(O(n)\)


这个题特殊性质有较强的引导意义,特殊性质 A 的 trick 值得学一下。这种分是否有绝对众数讨论的思想值得学习。

性质 B 的构造也需要想想,抓到很不是回文串的两种字符串即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/954958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20251103 - 折半搜索 总结

比赛链接:https://vjudge.net/contest/763332。 A 最板子的双搜,首先算出总和 \(\sum_{i=1}^{n} i\) 并将其除以二,然后对半去搜就行了。 B 甚至可以直接爆搜,因为次数限制过小,不需要上双搜去辅助;当然也是可以…

高级语言程序设计作业3

高级语言程序设计作业第三次作业作业课程:2025高级语言程序设计(福州大学) 作业要求:高级语言程序设计第三次个人作业 学号: 052406103 姓名: 叶银珍作业内容 编写并运行第4章4.8编程练习题目中的第2题~第4题, 第…

NPI

NPI在电子制造、研发与生产管理领域,NPI 是一个非常常见的术语,它的全称是:New Product Introduction —— 新产品导入(或新产品导入流程)下面我帮你系统解释一下它的含义和作用:一、NPI 的定义 NPI 指的是 把新…

P14359 [CSP-J 2025 T3] 异或和 ← 前缀异或和

【题目来源】https://www.luogu.com.cn/problem/P14359【题目描述】小 R 有一个长度为 n 的非负整数序列 a1,a2,…,an。定义一个区间 [l,r] (1≤l≤r≤n) 的权值为 al,al+1,…,ar 的二进制按位异或和,即 al⊕al+1⊕⋯…

Edge插件导入到chrome浏览器

Edge插件导入到chrome浏览器1.在 Edge 浏览器输入:edge://version/,按回车键后,可以看到“用户配置路径:xxx”,路径下的 Extensions 文件夹就是 Edge 安装扩展的位置.记得是路径下的下一级目录导入文件夹到chrome 2…

[CSP 2025]游记

[CSP 2025]游记CSP-J$T1$循环结构 $+$ 字符串,橙题,不说了肯定做出来了。 #include<bits/stdc++.h> using namespace std; #define int long long #define N 2000005 int top,a[N]; string s; signed main(){…

CF Pinely Round 5(#2161) 总结

CF Pinely Round 5(#2161) 总结 A~D A:每次都取到尽量小(对 \(0\) 取 max)即最优。 B:特判掉 2*2 的情况,剩下的情况只能是一条不断转弯的「斜线」,此时所有点都在两条相邻的斜线上,只需判断 \(x+y\) 的最值,或…

第14天(中等题 滑动窗口、哈希表)

打卡第十四天 2道中等题题目: 给你一个二元数组 nums ,和一个整数 goal ,请你统计并返回有多少个和为 goal 的 非空 子数组。 子数组 是数组的一段连续部分。 思路:代码: class Solution { public:int numSubarraysW…

寂静处的回响

任城外风景如何鲜艳,城中人总守着那处寂静的湖,湖面里映着虚幻的碧海蓝天。自幼时有记忆以来,那毒针便一直盘根,慢性的消磨着我的精神。 看着同龄人能穿透绿叶的纯粹,时常幻想自己能拥有哪怕一分一毫,可更不敢奢…

收藏!强化学习从入门到封神:5 本经典教材 + 8 大实战项目 + 7个免费视频,一站式搞定 - AI

原文:https://mp.weixin.qq.com/s/nfN0dWT3ZfDuW7ZGfaG6dA 学习资源 经典教材 《大模型算法:强化学习、微调与对齐》原创 100+ 架构图,系统讲解大模型、强化学习,涵盖:LLM / VLM 等大模型原理、训练算法(RL、RLH…

P2757 [国家集训队] 等差子序列 题解

SolutionLink 好题。考虑简化题意:找一个 \(|p| \geq 3\) 的序列 \(p\) 使得 \(A_{p_i}\) 呈现等差数列,那我们找一个三个数的等差数列就可以了。中间值是特殊的,我们枚举中间值,判断左右两边是否存在一个公差相等…

拾壹月Ⅲ

摆了一天,非常困,啥也没写,大部分不是口胡就是看题解。 打球 MX noip Round1 T1 很快就会了,没修改的时候最优的肯定是最大值加上最小的,直接排序求最大最小值即可。 而对于修改 \(a_x=v\) ,不妨设修改是变小的:…

20251103周一日记

20251103周一日记这周任务好多啊:哥哥结婚 两个课汇报 高数课答疑 实验助教 科研的 今日: 1.早上一觉醒来胸口疼,好像是压到了。洗个澡吃完饭回学校。 2.下午回实验室网很卡,把上周张老师发的毕设文章读完了。开始…

Window 安装多个 MySQL 实例 - Higurashi

当前已经安装了 MySQ(8.3.0),因为有时会需要用到多套系统数据(比如测试生产各一套数据),为了避免数据库名称冲突,希望安装多个 MySQL 实例。停止现有 MySQL 复制D:\soft\mysql-8.3.0-winx64\my.ini到D:\soft\my…

普赛斯

普赛斯关于我们-武汉普赛斯电子|全球光电芯片测试方案领跑者

claude code+openspec开发java代码基本流程

0️⃣ 准备:一次装好,终身可用 # 1. 装 Node ≥20 node -v # 出现 v22+ 就行# 2. 装 OpenSpec(规范驱动) npm i -g @fission-ai/openspec@latest# 3. 装 Claude Code(AI 编码) npm i -g cl…

【C】结构体赋值

结构体赋值 例如: #include <stdio.h> #include <string.h>struct Inner {int x;char name[20]; };struct Outer {int id;struct Inner inner; }; 初始化赋值(定义时): struct Outer o1 = {.id = 1,.i…

Office 2024 专业增强版下载安装教程:安装/下载/激活/全流程教程

大家好!最近总有朋友问 “Office 2024 专业增强版怎么装”“在哪能下安全的 Office 2024 安装包”,今天特意整理这份超详细的 Office 2024 专业增强版下载安装教程,从电脑能不能装的配置要求,到安全下载 Office 20…

Office 2024 专业增强版下载安装教程:安装/下载/激活/全流程教程

大家好!最近总有朋友问 “Office 2024 专业增强版怎么装”“在哪能下安全的 Office 2024 安装包”,今天特意整理这份超详细的 Office 2024 专业增强版下载安装教程,从电脑能不能装的配置要求,到安全下载 Office 20…

模拟赛 29

T1模拟即可,请输入文本。点击查看代码 #include<bits/stdc++.h> #define MAXN 10005 #define int long long using namespace std; const int inf=1e18; string tmp,ans[20]; int T,n,cnt,pos; char c[1005]; s…