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

QOJ7411 Bitwise Xor

内部通道(jzyz P6035),与原题唯一不同在于一个也不选也算一种方案。
首先挖掘性质。将\(a_i\)从小到大排序后,\(a_i\oplus a_j\)的最小值一定在某一对相邻\(a_i\),即\(a_i\oplus a_{i+1}\)处取到。
简易证明:排过序后,对于相邻的\(i,j,k\),从最高位去考虑,要么是\(0,0,1\),要么是\(0,1,1\),那么选\(i,j\)\(j,k\)一定不会比选\(i,k\)大。由此,若任意相邻位置满足条件,则整个序列都满足条件。
那么设\(dp_i\)表示以\(a_i\)结尾的方案数。根据以上性质显然有:\(dp_i=1+\sum_{a_j<a_i}dp_j[a_j\oplus a_i\ge m]\)
考虑在 Trie 上DP。这个我以前还真没怎么写过,所以记录一下代码实现。
首先,记录\(val_u\)表示 Trie 上\(u\)号点代表路径的\(dp\)值之和。即在 Trie 上插入\(a_i\)对应的\(dp_i\)时,令路径上每个节点\(u\)\(val\)值加上\(dp_i\)
为了求\(dp_i\)在 Trie 上查询时,考察\(m\)二进制下当前位:
若为\(1\),则这一位必须与\(a_i\)的对应位不同,直接移动指针经过与\(a_i\)状态不同的边。
若为\(0\),则这一位无限制,由于排了序,当前Trie上插入的都比\(a_i\)小,直接累加与\(a_i\)状态不同的边到的节点的\(val\),然后移动指针经过与\(a_i\)状态相同的边。

点击查看代码
int n;
ll m, a[N], dp[N], son[N * 60][2], val[N * 60];struct Trie{int tt = 1;void insert(ll x, ll k){int p = 1;for(int i = 59; i >= 0; i--){int y = ((x >> i) & 1);if(! son[p][y]) son[p][y] = ++tt;p = son[p][y];(val[p] += k) %= mod;}}ll ask(ll x, ll lim){int p = 1;ll rs = 0ll;for(int i = 59; i >= 0; i--){int y = ((x >> i) & 1), z = ((lim >> i) & 1);if(z) p = son[p][1 - y];else rs += val[son[p][1 - y]], p = son[p][y];rs %= mod;}(rs += val[p]) %= mod;return rs;}
}T;signed main(){read();n = read(), m = readll();for(int i = 1; i <= n; i++) a[i] = readll();sort(a + 1, a + n + 1);ll res = 0ll;for(int i = 1; i <= n; i++){dp[i] = T.ask(a[i], m) + 1ll;dp[i] %= mod;T.insert(a[i], dp[i]);res += dp[i];res %= mod;}cout << (res + 1) % mod;return 0;
}
http://www.hskmm.com/?act=detail&tid=25002

相关文章:

  • 完整教程:SOC-ESP32S3部分:25-HTTP请求
  • 为什么要采用“接口 - 抽象类 - 实现类”这种三层结构? - 浪矢
  • 对外提供 AI 服务的风险:合规视角与 AI 安全围栏落地指南
  • VScode C/C++ 汉化 竞赛版 只需下载扩展 (超简单)
  • 网络安全工具与社区讨论月报
  • 机器人运动未来与人机交互研究
  • 欧拉路径 欧拉图 小记
  • OI 笑传 #16
  • cf296b
  • 第一次使用Ttpora
  • Apache反向代理
  • 原版 Sunshine+虚拟显示器实现熄屏串流
  • 2025国庆Day4
  • gis坐标计算
  • day17 课程()
  • NKOJ全TJ计划——NP11744
  • ROIR 2025
  • trick 小记
  • python编写AI生常用匡架及使用指令集
  • 123123
  • 1005模拟赛总结
  • 2025.10.5 2024CCPC郑州
  • 20250531MATLAB三维绘图 - 教程
  • 概率期望dp 复习笔记
  • 2025.10
  • PCIe扫盲——物理层逻辑部分基础(一)
  • 仅需3%训练数据的文本归一化技术
  • 价值原语博弈协议:价值原语共识锚定原则
  • 实用指南:工作流引擎-16-开源审批流项目之 整合Flowable官方的Rest包
  • 25fall做题记录-October - Amy