题目描述
http://codeforces.com/gym/102956/problem/D
Solution
能够发现如果对于 $f_i$ 最优的情况是 $j_1,j_2,\cdots j_k,i$
那么一定不存在 $j_k<i’<i$,其中 $a[j_k]\&a[i’]$ 和 $a[i’]\&a[i]$ 的二进制最高位相同
否则将 $i’$ 加入会使答案更大,所以我们在转移时只需要对于每个二进制位记录最近的存在这位的位置即可
时间复杂度 $O(n\log a_i)$
1 |
|
http://codeforces.com/gym/102956/problem/D
能够发现如果对于 $f_i$ 最优的情况是 $j_1,j_2,\cdots j_k,i$
那么一定不存在 $j_k<i’<i$,其中 $a[j_k]\&a[i’]$ 和 $a[i’]\&a[i]$ 的二进制最高位相同
否则将 $i’$ 加入会使答案更大,所以我们在转移时只需要对于每个二进制位记录最近的存在这位的位置即可
时间复杂度 $O(n\log a_i)$
1 | #include <iostream> |