P207 数位翻转
数位翻转
题目描述
小明创造了一个函数 用来翻转 的二进制的数位(无前导 )。比如 ,因为 ,将其左右翻转后,变为 ;再比如 ,, 等等。
小明随机出了一个长度为 的整数数组 ,他想知道,在这个数组中选择最多 个不相交的区间,将这些区间内的数进行二进制数位翻转(将 变为 )后,整个数组的和最大是多少?
小明创造了一个函数 f(x) 用来翻转 x 的二进制的数位(无前导 0)。比如 f(11)=13,因为 11=(1011)2,将其左右翻转后,变为 13=(1101)2;再比如 f(3)=3,f(0)=0,f(2)=f(4)=f(8)=1 等等。
小明随机出了一个长度为 n 的整数数组 {a1,a2,⋯,an},他想知道,在这个数组中选择最多 m 个不相交的区间,将这些区间内的数进行二进制数位翻转(将 ai 变为 f(ai))后,整个数组的和最大是多少?