1 条题解
-
0
自动搬运
来自洛谷,原作者为

封禁用户
None搬运于
2025-08-24 23:16:06,当前版本为作者最后更新于2025-05-12 22:22:04,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
感谢 xyz123 对本题的加强建议,原版题目中只要求 。
说句闲话:我设计这题的初衷是【模板】哈希 2,而不是【模板】通信题。
如果 A 程序可以向 B 程序传递一个不大于 的非负整数,那么这就是一个 Hash 模板题。弱化后的题目随便用什么 Hash 函数都能过,比如「所有 的位置编号之和 」。
然而,这道题目只允许 A 程序向 B 程序传递一个不大于 的非负整数,因此我们要优化 Hash 函数——把 Hash 函数改为「所有 的位置编号之异或和」就可以通过此题了。
(可以发现,对于不变动的 位,设所有 的位置编号之异或和为 ,则第 位为 的字符串的最终 Hash 值为 ,而另一个为 ,二者的异或和恰好为 。当 时,两个 Hash 值都是 ,异或和恰好也为 。)
#include <bits/stdc++.h> using namespace std; int Alice(string S) { int X = 0; int n = S.size(); S = ' ' + S; for (int i = 1; i <= n; i++) if (S[i] == '1') X ^= i; return X; } int Bob(string T, int X) { int D = 0; int n = T.size(); T = ' ' + T; for (int i = 1; i <= n; i++) if (T[i] == '1') X ^= i; return X; }
- 1
信息
- ID
- 12283
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者