「题解」300iq Contest 2 B Bitwise Xor

本文介绍了300iq Contest 2 B题目的解法,涉及位运算和动态规划。题意是寻找满足两两异或大于等于x的最长子序列。解题关键在于发现异或性质,通过动态规划和数据结构优化(01-Trie)降低时间复杂度至线性对数级别。
摘要由CSDN通过智能技术生成

本文将同步发布于:

题目

题目链接:gym102331B

题意概述

给你一个长度为 n n n 的序列 a i a_i ai,求一个最长的子序列满足所有子序列中的元素两两满足 a i ⊕ a j ≥ x a_i\oplus a_j\geq x aiajx,其中 ⊕ \oplus 表示按位异或。

题解

发现性质

我们发现 p ⊕ q ≥ x p\oplus q\geq x pqx 这个性质不是很好处理,决定通过研究异或的性质来解决问题。

我们考虑一个数 a a a,若其满足 < x < x <x,那么一定满足下面的情况:

  • 存在一个 i i i 满足 a a a x x x [ i + 1 , ∞ ) [i+1,\infty) [i+1,) 位上相同,在第 i i i 位上有 a < x a<x a<x

我们考虑 p ⊕ q < x p\oplus q<x pq<x,发现:

对于位置第一个不同的位置 i i i,必然有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值