网络最大流
大概是最劣解?但能过嘿嘿。
考虑到对 $b$ 中某个值进行操作的时候能取到的值不多大概是 $O(\log^2)$ 种,所以想办法处理出这些数然后跟 $a$ 里面的数匹配,匹配的话当然是建图跑最大流就好啦。
很遗憾,tle on test 30 ,考虑剪枝:
- 集合 $a$ 和 $b$ 中重复的取值压倒一个点里面去,然后流量改成这个取值的数量。
- 考虑到一个数二进制末尾有 $0$ 时,把这些 $0$ 干掉不影响存在 $b$ 中的值与其匹配,所以直接把二进制末尾的 $0$ 全部干掉就好啦,然后发现边数从 $O(\log^2)$ 变成了 $O(\log)$ 的。
- 尝试指令集,或更优的网络流模型。
最重要的还是第 $2$ 个优化,点数 $O(n)$,边数 $O(n\log n)$,卡过去了。
代码:
1 |
|

