CF1117E Decypher the String题解

news/2024/10/7 19:51:10

传送门

神奇的题。

这是一道交互题。
给定一个字符串 \(s\) , 我们拥有若干操作 , 但是你不知道 , 第 \(i\) 个操作形如 \(a_i,b_i\) 表示交换字符串 \(s\) 中的第 \(a_i\) 位和 \(a_j\) 位。
比如操作序列依次为 \((1,2),(2,3)\) ,给定字符串为 xyz
那么我们执行第一次操作后字符串变为 yxz ,而执行第\(3\)次操作后则变为 yzx
我们已经告知了你完成所有操作后的字符串序列,你需要还原其。
不过,你可以询问至多 \(3\) 次,每次询问你需要给出一个字符串,其长度与给定的字符串相等,然后我们会告诉你操作后的字符串序列。
数据范围:保证\(|s|\le 10^4\)
输出答案需要加上 !
查询操作则需要加上 ?


首先我们直接忽略它的操作顺序。操作的结果可以看作给定一个数组 \(pos_i\),操作后的串第 \(i\) 个字符实际上是原串的第 \(pos_i\) 个字符。

这个构造过于神奇了,所以直接写。

第一次:询问串 \(q_1=R(a\sim z)\)。假设返回的串为 \(r_1\)。把 \(a\sim z\) 看作 \(0\sim 25\),若 \(r_1[i]=j\),则必有 \(pos_i\equiv j\pmod {26}\)。因为所有 \(j\) 都在原串 \(\bmod 26=j\) 的位置上。

第二次:询问串 \(q_2=R(a\sim y)\),得到 \(pos_i\equiv j'\pmod {25}\)

第三次:询问串 \(q_3=R(a\sim w)\),得到 \(pos_i\equiv j''\pmod {23}\)

根据中国剩余定理,可以求出 \(pos_i\equiv {26\times 25\times 23}\),因为 \(26\times 25\times 23>1000\),所以可以唯一确定 \(pos_i\),再倒回去还原即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

高级程序语言第二次个人作业

高级程序语言第二次作业这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/2024C/homework/13282学号 222200424姓名 赵伟豪编程练习3.13.23.33.43.53.63.73.8示例程序3.13.23.33.43.53.63.73.83.93.10总结与收获…

一起学RISC-V汇编第9讲之RISC-V ABI之栈帧

这一节讲解RISC-V中的栈帧。 1 C语言中的{}的秘密 函数执行的底层其实是操作寄存器,CPU的寄存器是有限的,为什么我们进行一系列函数调用后还能正确运行,这些函数之间是怎么协调使用寄存器的? 答案是:栈 函数之间能随意调用,还能顺利恢复现场,这个就是栈的功劳。为什么我…

浏览器的渲染原理

浏览器渲染原理 五个渲染流程Parse 阶段:解析 HTMLStyle 阶段:样式计算三个阶段:收集,划分和索引所有样式表中存在的样式规则 访问每个元素并找到适用于该元素的所有规则,CSS 引擎遍历 DOM 节点,进行选择器匹配,并且匹配的节点执行样式设置 结合层叠规则和其他信息为节点…

CSP2024 前集训:多校A层冲刺NOIP2024模拟赛03

前言T1 没想到正难则反,脑瘫了没敢用 bitset(复杂度擦边但卡常能过),T2 空间开大了挂了 \(100pts\),\(T3\) 是原。 T1 五彩斑斓部分分 \(20pts\):\(O(n^4)\) 暴力。部分分 \(20+?pts\):进行一些优化,极限数据下仍是 \(O(n^4)\)。部分分 \(60\sim 100pts\):bitset 优化…

在C#中使用适配器Adapter模式和扩展方法解决面向的对象设计问题

之前有阵子在业余时间拓展自己的一个游戏框架,结果在实现的过程中发现一个设计问题。这个游戏框架基于MonoGame实现,在MonoGame中,所有的材质渲染(Texture Rendering)都是通过SpriteBatch类来完成的。举个例子,假如希望在屏幕的某个地方显示一个图片材质(imageTexture)…

React Fiber 原理

React Fiber 在 React 16 之前的版本对比更新 VirtualDOM 的过程是采用 Stack 架构实现的,也就是循环加递归,这种方式的问题是一旦任务开始进行就无法被中断。 如果应用中的组件数量庞大, Virtual DOM 的层级比较深,主线程被长期占用,知道整颗 Virtual DOM 树比对更新完成…

视野修炼-技术周刊第104期 | 下一代 JavaScript 工具链

① 🐙 尤大创办公司 VoidZero ② Tauri 2.0 稳定版发布 ③ Vite 时髦的新主页 ④ qrframe - 漂亮二维码生成 ⑤ HTTP QUERY 方法提案 ⑥ TinyJS - 轻量级的创建DOM元素 ⑦ 9月 Web 平台的新功能 ⑧ ESLint 现在正式支持 Linting JSON 和 Markdown欢迎来到第 104 期的【视野修…