#P10911. [蓝桥杯 2024 国 B] 数位翻转

[蓝桥杯 2024 国 B] 数位翻转

题目描述

小明创造了一个函数 f(x)f(x) 用来翻转 xx 的二进制的数位(无前导 00)。比如 f(11)=13f (11) = 13,因为 11=(1011)211 = (1011)_2,将其左右翻转后,变为 13=(1101)213 = (1101)_2;再比如 f(3)=3f (3) = 3f(0)=0f (0) = 0f(2)=f(4)=f(8)=1f (2) = f (4) = f (8) = 1 等等。

小明随机出了一个长度为 nn 的整数数组 {a1,a2,,an}\{a_1, a_2,\cdots, a_n\},他想知道,在这个数组中选择最多 mm 个不相交的区间,将这些区间内的数进行二进制数位翻转(将 aia_i 变为 f(ai)f (a_i))后,整个数组的和最大是多少?

输入格式

输入共 22 行。

第一行为两个正整数 n,mn,m

第二行为 nn 个由空格分开的整数 a1,a2,,ana_1, a_2, \cdots, a_n

输出格式

输出共 11 行,一个整数表示答案。

5 3
11 12 13 14 15
67
6 2
23 8 11 19 16 35
134

提示

【样例说明 1】

只翻转 a1a_1,和为 13+12+13+14+15=6713 + 12 + 13 + 14 + 15 = 67

【样例说明 2】

翻转区间 [a3,a4][a_3, a_4][a6][a_6],和为 23+8+13+25+16+49=13423 + 8 + 13 + 25 + 16 + 49 = 134

【评测用例规模与约定】

对于 20%20\% 的评测用例,保证 n,m20n,m \le 20
对于 100%100\% 的评测用例,保证 n,m1000n,m \le 10000ai1090 \le a_i \le 10^9