本文将同步发布于:
题目
题目链接:gym102331B。
题意概述
给你一个长度为 n n n 的序列 a i a_i ai,求一个最长的子序列满足所有子序列中的元素两两满足 a i ⊕ a j ≥ x a_i\oplus a_j\geq x ai⊕aj≥x,其中 ⊕ \oplus ⊕ 表示按位异或。
题解
发现性质
我们发现 p ⊕ q ≥ x p\oplus q\geq x p⊕q≥x 这个性质不是很好处理,决定通过研究异或的性质来解决问题。
我们考虑一个数 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 p⊕q<x,发现:
对于位置第一个不同的位置 i i i,必然有