CF 1867B

代码

#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int ans[N];void solve()
{//输入字符串长度和字符串int n;string s;cin>>n>>s;//下面说的修改操作是进行异或操作//k表示前后对称位置不相等的字符的对数//m表示前后对称位置相等的字符的对数int k=0,m=0;//字符长度是奇数的情况//该情况最中间的字符可选择性修改if(n&1){//表示的是最中间字符的下标int mid=n/2;//下面是模拟出前后位置不相等和相等的字符的对数int l=mid-1,r=mid+1;while(l>=0&&r<=n-1){if(s[l]!=s[r])k++;elsem++;l--,r++;}//不相等的字符一定需要修改,才可以实现回文串的要求//回文串需要的是,前后对称位置的字符完全相等//前后位置不相等的元素,可以修改,也可以不修改//修改的话是提供两次贡献,有 m 对//最多提供 2m 次贡献//所以修改的区间是 k-k+2m+1for(int i=0;i<=n;i++)if(i>=k&&i<=k+2*m+1)cout<<1;elsecout<<0;cout<<endl;return;}//下面表示的是字符串长度是偶数的情况//最好找一个样例看一下下标的情况是否符合条件//下标很容易写错int mid=n/2;int l=mid-1,r=mid;//这里和上面板块一摸一样,直接复制过来的while(l>=0&&r<=n-1){if(s[l]!=s[r])k++;elsem++;l--,r++;}//cout<<k<<" "<<m<<endl;//字符串长度是偶数的话,没有一个最中间的元素//一定需要修改 k 次以上//上限是 k+2m 次,并且每一次修改都是 k 次加 2 的整数次修改//前后对称位置相等的时候,修改需要把两个元素都修改for(int i=0;i<=n;i++)if(i>=k&&(i-k)%2==0&&i<=k+2*m)ans[i]=1;elseans[i]=0;for(int i=0;i<=n;i++)cout<<ans[i];cout<<endl;
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin>>t;while(t--)solve();return 0;
}

简短代码

#include<bits/stdc++.h>using namespace std;void solve()
{int n;string s;cin>>n>>s;int cnt=0;for(int i=0;i<n/2;i++)if(s[i]!=s[n-i-1])cnt++;string ans(n+1,'0');for(int i=cnt;i<=n-cnt;i+=(n&1?1:2))ans[i]='1';cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin>>t;while(t--)solve();return 0;
}
#include<bits/stdc++.h>using namespace std;void solve()
{int n;string s;cin>>n>>s;//假设字符串长度是奇数,那么n/2表示的是最中间的位置的下标//假设是偶数,表示的是最中间两个元素里面靠右边的那个元素的//下标//cnt 统计的是前后对称位置不相等元素的对数int cnt=0;for(int i=0;i<n/2;i++)if(s[i]!=s[n-i-1])cnt++;//初始化答案为全 0,学一下这种写法string ans(n+1,'0');//判断奇数和偶数的两种情况,用 ? 这种语句简短表示for(int i=cnt;i<=n-cnt;i+=(n&1?1:2))ans[i]='1';cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin>>t;while(t--)solve();return 0;
}

字符串

该题题目意思比较难懂,意思是说,把一个给定的字符串修改成回文串,修改的操作是用一个等长的字符串和原来的字符串进行异或操作,这两个字符串都是 01 串

寻找的这个字符串中 1 的个数是需要统计的答案

最后输出的答案是一个字符串,这个比较奇怪的输出方式,字符串的下标表示的是前面说的统计出来的 1 的个数,假设符合条件就把该位置标记为 1 ,不符合条件就把这个位置标记为 0

解法是把前后对称位置的不相等的元素的对数统计出来

我们知道,回文串的要求是前后对称位置的元素相等,所以我们需要进行的操作就是把对称位置不相等的进行一次修改,随便修改一个即可,算一次操作,但是不可以对同一个元素修改两次,不符合题意,两个位置修改哪一个都不影响答案,答案只需要统计使用的 1 的数目

对称位置相等的元素,可以进行修改,每一次修改需要把两个元素都进行修改,要变一起变,大概这种,所以每一次对答案的贡献值是 2

假设字符串长度是奇数的话,最中间的元素可以任意修改,也就是说可以不修改也可以修改一次

以上就是全部的思路,字符串长度是奇数的话,答案就是 k-k+2m+1,k 表示的是前后对称位置的不相等元素的对数,m 表示的是前后对称位置相等元素的对数

偶数的话,首先需要 k 次,然后每一次都是 +2 ,最大值是 k+2m

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

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

相关文章

C/C++基础语法

C/C基础语法 文章目录 C/C基础语法头文件经典问题链表链表基础操作 秒数转换闰年斐波那契数列打印n阶菱形曼哈顿距离菱形图案的定义大数计算 输入输出格式化输入输出getline()函数解决cin只读入一个单词的问题fgets读入整行输出字符数组&#xff08;两种方式puts和printf&#…

Linux或Windows下判断socket连接状态

前言 场景&#xff1a;客户端程序需要实时知道和服务器的连接状态。比较通用的做法应用层是采用心跳机制&#xff0c;每隔一端时间发送心跳能回复说明服务器正常。 实际应用场景中&#xff0c;服务端和客户端并不是一家厂商的&#xff0c;比如说笔者这种情况&#xff0c;服务端…

推特API(Twitter API)V2 查询用户信息

前面章节已经介绍使用code换取Token的整个流程了&#xff0c;这里不再重复阐述了&#xff0c;下面我们介绍如何使用Token查询用户信息等操作。 1.引入相关依赖Maven <dependency> <groupId>oauth.signpost</groupId> <artifactId>signpost-co…

二刷代码随想录——贪心day34

文章目录 前言贪心知识点贪心的套路 贪心一般解题步骤一、860. 柠檬水找零二、406. 根据身高重建队列三、452. 用最少数量的箭引爆气球总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划二刷完卡子哥的刷题计划&#xff0c;加油&#xff01; 二刷决定精…

day10_oop

今日内容 零、 复习昨日 一、作业 二、继承 三、重写 四、this和super 五、访问修饰符 零、 复习昨日 数组创建的两种方式 new int[3];new int[]{值,值2,…}存值: 数组名[下标] 值 构造方法什么作用?有参无参构造什么区别? 创建对象无参创建出的对象属性是默认值有参创建出的…

【力扣白嫖日记】602.好友申请II:谁有最多的好友

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 602.好友申请II&#xff1a;谁有最多的好友 表&#xff1a;RequestAccepted 列名类型requester_idintaccept…

外卖店优先级

题目描述 ”饱了么”外卖系统中维护着N 家外卖店&#xff0c;编号1~N。每家外卖店都有一个优先级&#xff0c;初始时(0时刻)优先级都为0。 每经过1个时间单位&#xff0c;如果外卖店没有订单&#xff0c;则优先级会减少1&#xff0c;最低减到0;而如果外卖店有订单&#xff0c;则…

【AIGC】微笑的秘密花园:红玫瑰与少女的美好相遇

在这个迷人的画面中&#xff0c;我们目睹了一个迷人的时刻&#xff0c;女子则拥有一头柔顺亮丽的秀发&#xff0c;明亮的眼睛如同星河般璀璨&#xff0c;优雅而灵动&#xff0c;她的微笑如春日暖阳&#xff0c;温暖而又迷人。站在红玫瑰花瓣的惊人洪水中。 在一片湛蓝无云的晴…

Liberod的License申请

Liberod的License申请 找到license申请的路径 查找C盘的磁盘序列号 键盘的win+R,输入cmd 输入vol,然后回车 图中的DiskID就是填写你C盘序列号的位置,填写完成后点击Register,几秒钟后会提示你,预计45分钟后会发送到你的邮箱

docker-mysql:5.7安装

1、下载mysql:5.7镜像 [rootlocalhost ~]# docker search mysql (某个XXX镜像名字) [rootlocalhost ~]# docker pull mysql:5.7 按装之前查看一下是否按装过mysql。如果安装过会占用3306端口。 [rootlocalhost ~]# ps -ef | grep mysql 2、安装 # -d&#xff1a;后台运行 #…

C语言基础(五)——结构体与C++引用

七、结构体与C引用 7.1 结构体的定义、初始化、结构体数组 C 语言提供结构体来管理不同类型的数据组合。通过将不同类型的数据组合成一个整体&#xff0c;方便引用 例如&#xff0c;一名学生有学号、姓 名、性别、年龄、地址等属性&#xff0c;如果针对学生的学号、姓名、年龄…

MJ V7 在 V6 Beta 发布后即将推出,即将到来的人工智能 API 访问!

让我们深入了解 MidJourney 的新功能 在发布官方 Beta 之前总结 V6 Alpha 随着 MidJourney V6 Alpha 上周成为默认版本&#xff0c;该团队现在正在努力在过渡到官方 Beta 版本之前进行进一步的改进&#xff1a; 一组 3 个视觉一致性功能 1 — 升级的“风格参考”功能 这将是…

团体程序设计天梯赛 L2-003 月饼(多重背包模板)

L2-003 月饼 分数 25 月饼是中国人在中秋佳节时吃的一种传统食品&#xff0c;不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量&#xff0c;请你计算可以获得的最大收益是多少。 注意&#xff1a;销售时允许取出一部分库存。样例给…

pytorch基础1-pytorch介绍与张量操作

专题链接&#xff1a;https://blog.csdn.net/qq_33345365/category_12591348.html 本教程翻译自微软教程&#xff1a;https://learn.microsoft.com/en-us/training/paths/pytorch-fundamentals/ 初次编辑&#xff1a;2024/3/1&#xff1b;最后编辑&#xff1a;2024/3/1 这是本…

高中数学:分式函数值域的求法

一、求值域的两种基本思路 1、根据函数图像和定义域求出值域。 难点&#xff1a;画出函数图像 2、研究函数单调性和定义域求出值域。 二、函数图像画法 高中所学的分式函数&#xff0c;基本由反比例函数平移得到。 复杂分式函数图像画法的两个要点&#xff1a; a、找垂直、…

mysql 常用命令练习

管理表格从表中查询数据从多个表查询修改数据sql变量类型 管理表格 创建一个包含三列的新表 CREATE TABLE products (id INT,name VARCHAR(255) NOT NULL,price INT DEFAULT 0,PRIMARY KEY(id) // 自增 ); 从数据库中删除表 DROP TABLE product; 向表中添加新列 ALTER TAB…

如何优化阿里云幻兽帕鲁/Palworld的多人联机性能,并避免内存溢出导致的异常退出游戏?

优化阿里云幻兽帕鲁/Palworld的多人联机性能并避免内存溢出导致的异常退出游戏&#xff0c;可以采取以下几种方法&#xff1a; 选择合适的内存配置&#xff1a;由于幻兽帕鲁是一个对内存需求较高的游戏&#xff0c;建议选择至少16GB的内存。对于不同的玩家数量&#xff0c;可以…

【ArcGIS】渔网分割提取栅格图+网格化分析图绘制

ArcGIS按渔网分割提取栅格图并绘制网格化分析图 准备数据操作步骤步骤1&#xff1a;创建渔网&#xff08;Create Fishnet&#xff09;步骤2&#xff1a;栅格数据处理步骤3&#xff1a;栅格插值步骤4&#xff1a;数据关联 参考 网格化的目的是让各个数据更加标准化的进行统计。因…

GO常量指针

Go语言中的常量使用关键字const定义&#xff0c;用于存储不会改变的数据&#xff0c;常量是在编译时被创建的&#xff0c;即使定义在函数内部也是如此&#xff0c;并且只能是布尔型、数字型&#xff08;整数型、浮点型和复数&#xff09;和字符串型。 由于编译时的限制&#x…

自动化测试系列 —— UI自动化测试!

UI 测试是一种测试类型&#xff0c;也称为用户界面测试&#xff0c;通过该测试&#xff0c;我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的 BUG。了解用户将如何在用户和网站之间进行交互以执行 UI 测试至关重要&#xff0c;通过执行 UI 测试…