欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF923C.Perfect Security
Perfect Security
题目描述
Alice 有一条非常重要的信息 ,由一些非负整数组成,她希望将其保密,不让 Eve 知道。Alice 知道,唯一理论上安全的加密方式是一次性密码本。Alice 生成了一个长度与消息相同的随机密钥 。Alice 计算消息和密钥每个元素的按位异或(即 ,其中 表示按位异或运算),并将这个加密后的消息 保存下来。Alice 很聪明。像 Alice 一样吧。
例如,Alice 可能想要保存的信息是 。她生成的密钥为 。因此加密后的消息为 。
Alice 意识到不能将密钥和加密消息一起保存。她把密钥 发送给了 Bob,并删除了自己的副本。Alice 很聪明。真的,像 Alice 一样吧。
Bob 意识到加密消息只有在密钥保密的情况下才是安全的。因此,Bob 在保存密钥之前随机打乱了密钥的顺序。Bob 认为这样,即使 Eve 得到了加密消息和密钥,也无法读取消息。Bob 不聪明。不要像 Bob 一样。
在上面的例子中,Bob 可能选择了一个排列 ,并保存了打乱后的密钥 。
一年过去了,Alice 想要解密她的信息。直到现在 Bob 才意识到这是不可能的。由于他随机打乱了密钥,消息永远丢失了。我们提到过 Bob 不聪明吗?
Bob 希望至少能从消息中挽救一些信息。由于他不太聪明,他向你求助。你知道加密消息 和打乱后的密钥 。请你找出可能得到该加密消息的字典序最小的消息。
更准确地说,给定 和 ,请你找出字典序最小的消息 ,使得存在一个排列 ,满足对于每个 ,。
注意,如果存在某个下标 ,使得 ,且对于所有 都有 ,则序列 的字典序小于序列 。
输入格式
第一行包含一个整数 (),表示消息的长度。
第二行包含 个整数 (),表示加密后的消息。
第三行包含 个整数 (),表示打乱后的密钥。
输出格式
输出一行 个整数,表示字典序最小的可能消息 。注意,所有元素都应为非负数。
说明/提示
在第一个样例中,答案为 ,因为 ,,。密钥的其他排列会得到消息 、、、 和 ,这些消息的字典序都大于答案。
由 ChatGPT 4.1 翻译
样例
3
8 4 13
17 2 7
10 3 28
5
12 7 87 22 11
18 39 9 12 16
0 14 69 6 44
10
331415699 278745619 998190004 423175621 42983144 166555524 843586353 802130100 337889448 685310951
226011312 266003835 342809544 504667531 529814910 684873393 817026985 844010788 993949858 1031395667
128965467 243912600 4281110 112029883 223689619 76924724 429589 119397893 613490433 362863284
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |