[2018.07.10 T2]不回文

NOIP普及组|1999T2回文数 1999年NOIP普及组第2题:回文数 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个十进制数 $56$,将 $56$ 加 $65$(即把 $56$ 从右向左读),得到 $121$ 是一个回文数。 阅读详情

暂无链接

不回文

【问题描述】

学不会最小回文串划分的豆豆决定弃疗选择挑战非回文划分。

他想知道一个字符串 S 的最少和最多能划分成几个非回文串?

注: 如果一个字符串不是回文串,那么他是非回文串。例如()()是非回文串,而 ())(是回文串。

【输入格式】

第一行一个整数 T,表示测试数据组数。

接下来 T 行,每行一个仅由小写字母构成的字符串 S。

【输出格式】

输出 T 行,每行两个整数分别表示最小和最大划分。如果不存在非合法划分输出“-1 -1” (不含分号)。

【输入样例】

3
aaa
abba
abcb

【输出样例】

-1 -1
2 2
1 2

【数据范围】
      测试点编号                    数据范围                        约定 

           1                    |S |<=10                无特殊约定 

           2                                         只有 ab 两种字母 
                              |S |<=1,000 
           3                                            无特殊约定 

           4 
                                                     只有 ab 两种字母 
           5                  |S |<=30,000 

           6                                            无特殊约定 

           7 
                             |S |<=300,000           只有 ab 两种字母 
           8 

           9 
                             |S |<=300,000              无特殊约定 
          10 

对于所有数据满足,T=10。

题解

O(n2)O(n2)的dpdp没写,梦想T3T3去了,打完1010走人,结果最暴力的1010分还TT了,sh∗tsh∗t!

最后的结论太玄学了,能想到算我输,orzorz考场切题的RockduRockdu,太强了%%%%%%。

首先来看看最小值(貌似最小值是雅礼的签到题,但是我没去啊???sh∗tsh∗t!),最小划分只有三种情况:

1.该串本身不回文,那么最小划分就是这个串,答案=1=1;

2.该串可以被分成22个不回文的串,此时答案=2;

3.若前面的条件都不满足,则不存在合法划分。

证明???看看题解怎么说:↓↓

图片2.png

再说最大值,我们可以先粗略的贪心一波:如果相邻的两个字符不相同,我们就可以把这两个字符单独划分出来(最后一个多余的字符忽略掉),这样我们求出来的答案将会是一个上限,什么时候这个答案是错的呢???,如下:

jajbjcjdjejfjpjojkjjajbjcjdjejfjpjojkj

按照贪心的划分,最后会留下一个长度为33的回文串,如下:

ja | jb | jc | jd | je | jf | jp | jo | jkj

所以只能合并一下中间的串:

ja | jb | jc | jdjej | fj | pj | oj | kjja | jb | jc | jdjej | fj | pj | oj | kj

这样我们的最大划分就会−1−1。

上面的合并也有一点问题,当串本身不能被划分为两个不回文串的时候,最大划分为11,需要特判。

代码
#include<bits/stdc++.h>
using namespace std;
const int M=3e5+5;
int T,len,base=19491001,minn,maxn,flag,cut,i;
char ch[M];
unsigned long long key[M],abc[M],cba[M];
void in(){scanf("%s",ch+1);}
bool bhw(int l,int r){return abc[r]-abc[l-1]*key[r-l+1]!=cba[l]-cba[r+1]*key[r-l+1];}
void ac()
{
    len=strlen(ch+1),abc[0]=cba[len+1]=maxn=flag=cut=0,minn=-1;
    for(i=1;i<=len;++i)abc[i]=abc[i-1]*base+ch[i];
    for(i=len;i>=1;--i)cba[i]=cba[i+1]*base+ch[i];
    for(i=1;i<len;++i)if(bhw(1,i)&&bhw(i+1,len)){minn=2;cut=1;break;}
    if(bhw(1,len))minn=1;else if(cut)minn=2;else {puts("-1 -1");return;}
    for(i=1;i<=len;++i)if(!flag)flag=1;else if(ch[i]!=ch[i-1])flag=0,++maxn;
    if(len>=3&&len%2)
    {
        flag=1;
        for(i=1;i<=len;i+=2)if(ch[i]!=ch[1]){flag=0;break;}
        for(i=2;i<=len;i+=2)if(ch[i]==ch[1]){flag=0;break;}
        if(flag)--maxn;
    }
    printf("%d %d\n",minn,cut?maxn:1);
}
int main()
{
    scanf("%d",&T);
    key[0]=1;for(i=1;i<M;++i)key[i]=key[i-1]*base;
    while(T--)in(),ac();
}
2023年CSP-X复赛真题题解(T2:回文字符串) 阅读详情

相关推荐

NOIP2016普及组复赛——T2回文日期

题目描述 在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。 牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。 显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。 牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。 现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。 一个 8 位数字是回文的,当且仅当对于所有的 i(1≤i≤8) 从左向右数的第i个数

少儿编程乔老师 811

成都day2t2

2 、 不回文 ( bhw .pas/cpp )【问题描述】学不会最小回文串划分的豆豆决定弃疗选择挑战非回文划分。他想知道一个字符串 S 的最少和最多能划分成几个非回文串?注: 如果一个字符串不是回文串,那么他是非回文串。例如()()是非回文串,而())(是回文串。【输入格式】第一行一个整数 T,表示测试数据组数。接下来 T 行,每行一个仅由小写字母构成的字符串 S。【输出格式】输出 T 行,每行...

oldxmtang的博客 241

MCNP 减方差技巧(最全)

MCNP的减方差技巧,核心在于不显著增加计算时间的前提下,通过修改模拟过程来降低结果的统计误差。尤其适用于,这类问题中粒子很难到达探测器区域,直接模拟效率极低栅元重要性是常用的减方差技巧,该方法主要对计算模型的不同区域定义不同的重要性数值。当粒子从重要性低的区域废物重要性高的区域,产生更多粒子,增大统计量;当从重要性高的区域进入重要性低的区域,会进行,增快计算效率。n= 中子,N;光子,P;电子 Exi= 栅元i的重要性I=栅元总数项目IMP卡是必须的,除非使用了WWN卡如果粒子进入0。

chencheng1127的博客 929

分割字符串串(使它的每个子串都是回文串)

输入:"aab" 输出: [ ["aa","b"], ["a","a","b"] ] vector<vector<string>>result; vector<string>path;//放已经回文的子串 voidbacktracking(conststring&s,intstartIndex){ //如果起始位置已经大于s的大小,说明已经找到了一组分割方案了 ...

m0_47575628的博客 560

无痛安装及初始配置 PHP 8.0.3 + Apache 2.4 + MySQL 8.0

PHP 8.0.3 + Apache 2.4 + MySQL 8.0MySQL 8.0.23 安装下载安装配置环境变量初始化MySQLPHP8.0.3 安装下载安装配置环境变量Apache 2.4 安装下载安装启动 MySQL 8.0.23 安装 下载 到官方网站下载:https://dev.mysql.com/downloads/mysql/ 目前的最新版本是MySQL 8.0.23 在Windows上有两种安装方式,一个是zip压缩文件解压然后配置,另一个是图像化界面安装。 这里选择第一种方法安装:

Kuang Da's Blog 6208

OpenWRT二级路由DHCP客户端配置:实现IPv4 WAN自动获取与网段隔离

本文详细讲解了如何将OpenWRT配置为二级路由器,重点在于设置其WAN口为DHCP客户端以自动获取IPv4地址,并修改LAN口网段实现与上级网络的隔离。文章提供了从网络拓扑规划、具体配置步骤到防火墙设置的完整指南,并分享了常见问题排查与避坑经验,帮助用户构建稳定且功能独立的家庭网络环境。

weixin_29268267的博客 294

Leetcode--131. 分割回文串

​​​​​​131. 分割回文串​​​​​​131. 分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例 2: 输入:s = "a" 输出:[["a"]] 提示: 1 <= s.length <= 16 s 仅由小写英文字母组成 代码: cla.

codecompasses的博客 211

LangChain入门(二)-通过 Google 搜索并返回答案

并复制他给我们生成 api key。(博主使用了GitHub账号登录)-邮箱验证-手机号验证-订阅-api-key。Serpapi 提供了 google 搜索的 api 接口。首先需要我们到 Serpapi 官网上注册一个用户,

Good Luck 1万+

2019年安徽省程序设计大赛(H.不要回文)

H.不要回文 时间限制:2s 描述: 给出一个字符串 S,你需要尽可能少的修改 S 中的字符, 使得 S 不包含长度大于等于 2 的回文子串。 输入 输入的第一行是一个字符串 S, S只包含小写字母 S 的长度大于 5 小于 300 输出 输出使得 S 中不包含长度大于等于 2 的回文, 最少需要修改几个字符 (可以修改成任意字符) 样例输入 abbaa 样例输出 2 解题思路 此题的难点在于: (1)题目要求不可以出现回文长度大于等于2的回文,即所有相邻的字符都不能相等并且间隔为1的字符也不能相等。

努力学习GNNing 727

Materials - UE5中的PivotPainter

可以使用3DS Max Script中的脚本(Pivot Painter)对模型进行处理,让每个Element都有自己的Pivot Point,来方便控制和制作一些特殊的顶点动画效果;

GT的虚幻引擎文档 1290

【ArcGIS微课1000例】0145:如何按照自定义形状裁剪数据框?

使用绘图 工具条上的新建圆工具 可创建一个椭圆,使其包含要在该数据框中显示的数据范围。. 在基础工具工具条上单击选择元素工具 ,然后选择圆形。. 在内容列表中右键单击要裁剪的数据框,然后单击属性。. 单击裁剪选项下拉菜单,然后选择裁剪至形状。. 单击数据框属性 对话框中的数据框选项卡。还可以更改裁剪形状轮廓的边框选项。打开软件,添加配套实验数据包中。修改椭圆的属性,使其透明。. 单击所选图形的轮廓。. 单击指定形状按钮。

智慧空间实验室 958

2019安徽省程序设计大赛H题,不要回文分析与实现

2019安徽省程序设计大赛H题,不要回文分析与实现前景介绍题目什么叫回文难点思想代码实现运行结果 前景介绍 这是我们程序设计艺术与方法老师布置的一个任务,于是思考了一下,最后顺利实现,该代码的时间复杂度为O(n),求解速度较快,实现基础就基本的C++知识,多话不说,咱们开始分析。 题目 时间 :2s 题目描述:给出一个字符串 S,你需要尽可能少的修改 S 中的字符, 使得 S 不包含长度大于等于 2 的回文子串。 输入:输入的第一行是一个字符串 S, S只包含小写字母 S 的长度大于 5 小于 300 输出

Freedom_cao的博客 1969

编织数据的实时脉络——构建基于MySQL的数据编织平台,实现实时数据治理

除了上述基本设置外,我们还可以根据实际应用场景自定义一些特定的监控项目。例如,对于某些高并发读写的表,可能需要特别关注它们的锁等待时间和回滚段使用率;而对于涉及到跨库关联查询的操作,则应当着重检查网络延迟及缓存命中率等因素。-- 获取InnoDB行级锁等待情况-- 统计各表的缓存命中率这段SQL脚本不仅展示了如何查询InnoDB引擎下的锁争用状况,还介绍了计算表级别缓存命中率的方法,有助于深入理解系统的运行状态。

墨夶的博客 1789

2016NOIP普及组T2回文日期

回文日期 分类:枚举,函数 【题目描述】 日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月份,最后2位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。 牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本...

weixin_45497223的博客 996

ardupilot开发 --- 避障篇

适配ardupilot的雷达避障功能开发,使用低成本雷达思岚科技系列雷达,配置简单,灵敏度高,障碍物检测范围不低于30m。

记录老板的每次pua,分享领导每天的毒鸡汤... 4301

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

NOIP2018普及T4对称二叉树-基于回文子串判断的的更优解法

NOIP2018普及T4对称二叉树-基于回文子串判断的的更优解法 ​ 题目:https://www.luogu.org/problemnew/show/P5018 ​ NOIP2018普及组T4对称二叉树有着很像暴力的O(nlogn)正解。用树哈希可以优化到O(n),但是hash这类玄学算法毕竟让人不是那么舒服,因此天才的我想出了另一个**O(n)**算法,思路如下: ​ (1)dfs一遍,存下这...

qq_42761323的博客 389

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

信息学奥林匹克竞赛 普及组 NOIP 2016 T2 回文日期

NOIP2016 普及组 T2。

长春高老师编程 1753

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【2016NOIP普及组】T2 回文日期

P2010 回文日期 题目传送门 方法一: #include<cstdio> #include<iostream> #include<cmath> #include<cstring> #include<string> #include<algorithm> #include<vector> #define fre(...

蒟蒻こんにゃく 347

C++——NOIP2016普及组 t2——回文日期

题目描述 在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。 牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月 份,最后 2 位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。 牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8 位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间包含这两个日期本身

McDonnell_Douglas的博客 2968

NOIP2018提高组省一冲奖班模测训练4 T2 奇怪的回文串

10月28日NOIP2018提高组省一冲奖班模测训练4 T2 奇怪的回文串 题目描述 小D对字符串有着奇怪的认识。对于一个字符串S,他认为S是满足“奇数-回文”性质,当且仅当这个串的所有长度为奇数的子串都是回文串。注意一个串的子串指的是串中任意连续位置形成的串,一个“奇数-回文”串本身并不需要长度为奇数。 现在小D有一个长度为N的字符串S。他有K次修改这个字符串的机会。每次修改,他可以选择...

SEVE_M的博客 379

2016 CSP-J/NOIP万字长文复赛真题题解——秒杀T1 买铅笔,T2 回文日期,T3 海港,T4 魔法阵

一篇NOIP/CSP-J2016的万字精选题解,全方面地为题目进行了完全详尽、清晰明了的解析,给正在学习信息学的读者提高编程水平,在各大信息学赛事中更好地“秒杀”所有题目。

lixuean0408的博客 2016

CSP2021 T3 回文

csp2021T3回文

ID246783的博客 552

洛谷T89644 palindrome回文串

洛谷 T89643 回文串(并查集) 洛谷:https://www.luogu.org/problem/T89643题目描述由于 Kiana 实在是太忙了,所以今天的题里面没有 Kiana。 有一个长度为 N 的字符串 S,有 K 条信息,每条信息为一个区间 [l,r],表示 S[l],S[l+1],……,S[r]是一个回文串。 出题人想知道,这个字符串中最多有多少种不同的字符。由于她 不会...

weixin_30699235的博客 148

2018 南京区域赛 M (回文自动机+exkmp)

题目链接 2018 南京区域赛 M 题意:给你两个字符串S和T,询问由多少对三元组(i,j,k)使得S的子串s[i]~s[j]和T的长度为k的前缀拼接起来是一个回文串,且S对应的子串要比T对应的前缀长 题解: 首先我们知道,S对应的子串比T对应的前缀长,那么说明S[i] ~ s[i+k]反转后一定和T的前缀相等,那么中间的s[i+k+1] ~ s[j]必定对应的就是回文串。 所以我们可以把S反转后...

qq_43544481的博客 395

[2018.07.17 T2] Palindromes

暂无链接 Palindromes 【问题描述】 纸上得来终觉浅,绝知此事要躬行。 有一个小写字符串 s。我们定义 s 的一个子串的存在值为这个子串在 s 中出现的次数乘以这个子串的长度。 对于给你的这个字符串 s,求所有回文子串中的最大存在值。 【输入格式】 一行,一个由小写字母(a~z)组成的非空字符串 s。 【输出格式】 输出一个整数,表示所有回文子串中的最大存在...

ShadyPi的IT笔记 391

C++|【回文数】T45--26.3.2

作者: ZhouMingLiang有一天,明明在做数学作业的时候,发现了一组很有趣的数字。例如1、11、121、1331等等。他发现这些数字都是左右对称的,即不管你把这些数字从左读到右还是从右读到左,读出来的数字都是一样的。于是明明就把这个发现告诉了他爸爸。明明的爸爸是一名数学专家,他当然对这种类型的数字早有研究,他对明明说:“这些是回文数,它是一种特殊的数字现象,即这些数字的左右两边是对称的。例如:121左右两边对称,1331左右也是对称的。

m0_74149727的博客 429
上一篇: [2018.07.10 T1]叠盒子
下一篇: [2018.07.10 T3]数论题
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值