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

cf div2 1051 E(视角转换,构造+思维)

E

一道简约清新的构造题,感觉这种构造题真的很难得。

回顾题意:给定一个括号串,每次可以翻转两个相邻的相同括号,任意次,问能否将原序列变成一个 \(RBS\),并给出构造方案。

直接按原操作的角度来想是很困难的。这个时候就需要考虑:能否将操作变成一种简约,易懂的等价操作

考虑对原串作一种视角上的变换:奇数位不变,偶数位翻转。(注意,不实际改变每个位置的元素,只是对于特定位置更换看待视角

变换后,对于新视角下的操作就变为了:交换两个相邻的不同括号。因为任意两个相邻的位置,必然恰好由一个奇数位和一个偶数位构成,而若两个位置上的元素在原视角是相同的,则在新视角一定是不同的。而交换两个相邻的相同括号等价于未操作,但是我们视为可以交换两个相邻的相同括号。综合以上两点,其实新视角下的操作等价于可以交换任意两个相邻位置上的元素,进而等价于可以交换任意两个位置上的元素,即可以得到所有元素不变情况下的任意排列。这时的操作就变得很简约了。

于是,原问题等价于:对于含有恰好 \(x\)\('('\) 和恰好 \(y\)\(')'\) 的任意排序,是否存在一种排列,使得其所有偶数位翻转后是一个 \(RBS\)

(这里主要记录一下视角转换的思考过程,感觉非常值得借鉴与复用。后面的解法就不再写了,看其他人的就行。)

code

2024ICPC南京B

这道题与去年的南京区域赛是一类题目,套路一模一样。

对原串作视角转换:将所有偶数位的 \(01\) 交换,\(2\) 不变。则原操作的“删除任意两个 \(00\)\(11\)”,在新视角下便等价于删除任意两个相邻的不同数字。考虑一个很典的性质:对于同时包含 \(0\)\(1\)\(01\) 串,一定含有相邻的 \(01\)\(10\)。于是我们发现,在新视角下,\(0\)\(1\) 两种数字只会留下一个。若想让最终序列尽可能短,那么显然应该让 \(01\) 数量尽可能接近。于是 \(2\) 的转变根据 \(01\) 的数量差贪心进行即可。具体细节见代码。

code

http://www.rkmt.cn/news/7989.html

相关文章:

  • openHarmony之开源三方库zlib适配讲解 - 实践
  • phoenix 导出sql执行结果到文件中
  • LK32V12A 过压/过流保护开关芯片 OVP过压45V 过流2.2A电流 SOT-23L
  • 深入解析:HTML元素周期表
  • APP 内测分发的核心逻辑与流程,虾分发让效率翻倍
  • 深入解析:【vue+exceljs+file-saver】纯前端:下载excel和上传解析excel
  • 解码C语言关键字
  • Windows环境中安装Zookeeper
  • ​​电流探头选型技术指南:精准捕获电流信号的艺术​​
  • slurm启动验证命令
  • 实用指南:LeetCode //C - 836. Rectangle Overlap
  • 深入解析:[Android] 安卓手机翻页时钟Flip Clock - World Clock v1.5.0.0
  • 深入解析:多模态大模型3:TAViS
  • 基于STM32F103C8T6与DS18B20的温度测量系统
  • Oxygen Forensic Detective 18.0 发布,新增功能简介
  • Windows如何美化cmd窗口
  • MX Round 7 解题报告
  • 实用指南:售价3499美元,英伟达Jetson Thor实现机器人与物理世界的实时智能交互
  • 逻辑回归 vs 支持向量机 vs 随机森林:哪个更适合小数据集? - 指南
  • 券多多系统-开发记录
  • US$189 Yanhua Mini ACDP Module3 Read amp; Write BMW DME ISN Code by OBD
  • React 状态丢失:组件 key 用错引发的渲染异常 - 指南
  • 快速实现 Excel 表格转 SVG:Java 教程 - E
  • PolarFire SoC QSPI 代码编写 测试
  • C++中类的内存存储
  • 做题
  • SchemaStore
  • Visual Studio 2026 Insiders 重磅发布:AI 深度集成、性能飞跃、全新设计
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-29- 操作单选和多选按钮 - 下篇(详细教程) - 北京
  • 自定义注解实现服务分处理-策略模式