BZOJ4536 : 最大异或和II

建立n+m个点的无向图,其中n个点表示输入的数列,m个点表示答案的m个二进制位。

  • 对于输入的两个数a[i],a[j],若它们存在公共二进制位,则可以通过同时选某一公共位来对答案贡献0,并完成两个数的选择,因此在数i和数j之间连边,边权为二维权值(2,0)
  • 对于输入的某个数a[i],若它二进制下第j位为1,则可以通过让它选这一位来对答案贡献2j,因此在数i和位j之间连边,边权为二维权值(1,2j)

显然每个点最多只允许匹配一次,目标就是最大化二维权值的总和,即先保证n个数都完成了选择,再最大化每一位选择个数为奇数的贡献和。

利用一般图最大权匹配算法求出答案即可。

时间复杂度O((n+m)3)

 

  

posted @   Claris  阅读(211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2017-12-12 BZOJ4858 : [Jsoi2016]炸弹攻击 2
2017-12-12 XV Open Cup named after E.V. Pankratiev. GP of America
点击右上角即可分享
微信分享提示