Can't go up
Exber
洛谷 @Exber
Codeforces @Rebex
给定一个长为 nnn 的不降序列,每次操作可以任选相邻的两个数,并将这两个数替换为两个数按位异或的结果,现在需要破坏序列的不降,求最少操作次数,无解输出 −1-1−1。 2≤n≤1052 \le n \le 10^52≤n≤105,1≤ai≤1091 \le a_i \le 10^91≤ai≤109。
给定一个长为 nnn 的不降序列,每次操作可以任选相邻的两个数,并将这两个数替换为两个数按位异或的结果,现在需要破坏序列的不降,求最少操作次数,无解输出 −1-1−1。
2≤n≤1052 \le n \le 10^52≤n≤105,1≤ai≤1091 \le a_i \le 10^91≤ai≤109。
首先,若序列中有三项的最高位相同(它们必定相邻),那么前两个异或起来就可以消去最高位,显然答案为 111。
否则序列中最高位为 2i2^i2i 的项最多只有两个,那么序列中最多有 606060 个数,直接暴力枚举 [l,k][l,k][l,k] 和 [k+1,r][k+1,r][k+1,r],用前缀异或和判断能否破坏不降即可。
扫码打赏,你说多少就多少