P12509
Update 2025/12/29:修复了第一行的一个 typo。
感谢 xyz123 对本题的加强建议,原版题目中只要求
说句闲话:我设计这题的初衷是【模板】哈希 2,而不是【模板】通信题。
如果 A 程序可以向 B 程序传递一个不大于
然而,这道题目只允许 A 程序向 B 程序传递一个不大于
(可以发现,对于不变动的
#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;
}
那么这题数据是怎么造的?
- 首先均匀随机一个
[0, 1] 范围内的实数r 表示\tt 1 出现的比例。- 按比例
r 逐位(不均匀)随机生成S 。- 根据测试点编号,均匀随机选定一个修改位置并生成
T :
- 测试点
1, 2, 6, 7, 11, 12, 16, 17 保证S_P = \tt 1 。- 测试点
3, 4, 8, 9, 13, 14, 18, 19 保证S_P = \tt 0 。- 测试点
5, 10, 15, 20 保证P = 0 。
最后,欢迎大家来题目来源处打卡!