编程题
### 问题描述 给定一个长为 $n$ 的数组 $a$,你可以选择一个范围在 $1$ 到 $n$ 之间的正整数 $k$,并选择数组 $a$ 的 $k$ 个非空子区间,使得数组 $a$ 的每个元素都处在且仅处在一个区间中。换句话说,便是将数组 $a$ 划分为 $k$ 个区间。定义一个区间的权值为区间中所有元素进行按位或运算的结果。求所有 $k$ 个区间的权值之和的最小值,以及在保证所有 $k$ 个区间的权值之和的最小的情况下可以选择的 $k$ 的最大值。 ### 输入格式 输入第一行包含一个整数 $n$,表示数组 $a$ 的长度。 第二行包含 $n$ 个整数,表示数组 $a$。 ### 输出格式 输出两个整数,分别表示所有 $k$ 个区间的权值之和的最小值,以及在保证所有 $k$ 个区间的权值之和最小的情况下可以选择的 $k$ 的最大值。 ### 样例输入 ```text 4 1 0 10 2 ``` ### 样例输出 ```text 11 3 ``` ### 说明 可以选择 $k = 3$,选择三个区间分别为 $[1,1]$,$[2,2]$,$[3,4]$。三个区间权值分别为 $1$,$0$,$10$,和为 $11$。可以证明不存在使所有 $k$ 个区间的权值之和更小或在保证所有 $k$ 个区间的权值之和最小的情况下 $k$ 更大的方案。 ### 评测数据规模 对于 $20$% 的评测数据,$1\leq n \leq 500$。 对于 $40$% 的评测数据,$1\leq n \leq 5\times 10^3$。 对于 $100$% 的评测数据,$1\leq n \leq 2\times 10^5$,$0\leq a_i \leq 2^{30}-1$。
查看答案
赣ICP备20007335号-2