当前位置: 首页 > news >正文

Educational Codeforces Round 2 复盘

战绩
结果 AC:3, WA:0,N:3

状态:不错
题目列表

比R1难不少,前三题洛谷评级是:黄,橙,绿

T1

模拟没啥好说的...看看题,注意细节

T2

排序+二分,非常好想

T3

这才是重点

题面

CF600C Make Palindrome

题目描述

如果一个字符串从左到右和从右到左读都是一样的,我们称之为回文串。例如 "kazak"、"oo"、"r" 和 "mikhailrubinchikkihcniburliahkim" 都是回文串,而 "abb" 和 "ij" 不是。

给你一个由小写拉丁字母组成的字符串 \(s\)。每次你可以选择字符串中的任意一个位置,将该位置的字母改成任意其他小写字母。因此,每次更改后字符串的长度不会改变。最开始你可以对 \(s\) 进行若干次这样的修改。然后,你可以对字符串中的字母进行任意排序(即任意打乱顺序),排列的过程不计为更改。

你需要通过最少的字母更改操作,将原字符串变为一个回文串。如果有多种方法能做到操作次数最少,你还需要输出字典序(按字母顺序)最小的那个回文串。换句话说,首先要最小化修改次数,然后最小化最终的回文串的字典序。

输入格式

输入仅一行,包含字符串 \(s\)\(1 \leq |s| \leq 2 \cdot 10^{5}\)),字符串只包含小写拉丁字母。

输出格式

输出一个经过最少修改且字典序最小的回文串。

输入输出样例 #1

输入 #1

aabc

输出 #1

abba

输入输出样例 #2

输入 #2

aabcd

输出 #2

abcba

说明/提示

由 ChatGPT 5 翻译

其实我一下就想到了思路...但是一开始还是有一些漏洞

可以搞一个\(map\)它能让字典序从小到大排序, 存每一个字母有多少个,

有两种情况
  • 如果是偶数,放两边就行,不影响回文
  • 如果是奇数,覆盖另一个奇数的位置,这样两个都变偶数
看代码
#include <bits/stdc++.h>using namespace std;map<char, int> mp; // 存储每个字母的数量,其实也可以直接用数组,优化不大signed main() {string s;cin >> s;int n = s.size();s = '!' + s; // 和上面一行位置千万不要写反for (int i = 1; i <= n; i++) {mp[s[i]]++;}vector<char> odd; // 找到里面出现奇数次的字母for (auto& i : mp) { // 找呗if (i.second & 1) odd.push_back(i.first);}int l = 0, r = odd.size() - 1;while (l < r) {mp[odd[l]]++;mp[odd[r]]--;l++, r--;}/*我们希望字典序小的在外围就是在保证操作次数最优的前提下,让字典序小的多一点*/string s1 = "", s2 = ""; // 用于拼接,分两段更方便记录char mid = 0; // 如果有奇数个字符,中间的那个for (auto& i : mp) {if (i.second & 1) {mid = i.first; // 拿到这个唯一是奇数的,最后要放在中间的东西i.second--; // 去掉中心的一个}int half = i.second / 2; // 均分,一个变量存一半s1 += string(half, i.first); // 填充half个i.second到s1s2 += string(half, i.first); // 同理}//输出cout << s1;if (mid) cout << mid;reverse(s2.begin(), s2.end());cout << s2 << endl;return 0;
}
小技巧

回文数可以分两个字符串存,输出时拼上就行,奇数长度时不要忘了中间那个数!


如果对你有帮助,点个赞再走吧!

http://www.jsqmd.com/news/551133/

相关文章:

  • 路沿模板,北海水泥路路沿模板,25公分路面钢模哪家质量好
  • 3步高效获取无水印视频:TikTokDownload新手实用指南
  • Python原生AOT编译报错解决率98.7%的黄金组合:1个自检脚本+2个环境隔离容器+1份2026 Q2已验证的ABI白名单(限本周内开放下载)
  • switch case加宏实现协程类似的操作
  • 从零开始的web开发03
  • Asian Beauty Z-Image Turbo 建筑概念设计展:未来都市与奇幻场景生成
  • 2026年3月进口水性漆厂家推荐,进口环保水性漆、进口水性油漆、进口水性金属漆,低VOC高附着力源头厂商精选 - 品牌企业推荐师(官方)
  • GHelper:华硕笔记本的轻量级性能管家,告别臃肿拥抱自由
  • 保姆级教程:从下载到汉化,手把手搞定AD20安装与激活(附资源包)
  • 告别爆显存!WuliArt Qwen-Image Turbo优化实测:小显卡也能畅玩文生图
  • 拼多多API授权实战:从OAuth2.0到access_token的全流程解析
  • 阿里CosyVoice3声音克隆实战:从部署到生成,小白也能轻松上手
  • HsMod炉石传说插件:让游戏体验个性化的实用指南
  • Magisk终极实战指南:Android系统Root权限的完整解决方案
  • Audacity:音频创作的颠覆性工具与效率革命
  • Qt6开发环境搭建避坑指南:为什么你的Kit里没有MSVC2019?两种情况的解决方案都在这
  • 3个技巧让Mac窗口管理效率翻倍:Loop终极指南
  • 3分钟零配置:在浏览器中直接查看SQLite数据库的纯前端方案
  • PhysX源码分析——RigidBody:刚体的数据结构
  • Java基于微信小程序的学生签到系统,附源码+文档说明
  • 数据集资源
  • AI视频增强技术全解析:从问题诊断到实战优化的完整指南
  • 赤子城科技年营收69亿:同比增35% 经调整EBITDA为12亿
  • Source Han Serif CN:跨媒介设计的专业中文字体解决方案
  • 别再只盯着代码了!手把手教你读懂Cartographer的PGM和YAML地图文件(附Notepad++实操)
  • 3分钟掌握:如何用MacBook触控板实现精准称重功能
  • libevent bufferevent原理与嵌入式网络通信实践
  • Stable-Diffusion-v1-5-archive生产环境部署:异常自动拉起+日志监控+多用户隔离方案
  • NOJ编程竞赛中的五大常见错误类型及高效调试技巧
  • PhysX源码分析——约束求解器:物理世界的法官