#1347. [Baltic2006] Bitwise

[Baltic2006] Bitwise

题目描述

在信号处理中,人们有时会对一个给定表达式的最大值感兴趣。这个表达式只含有按位与(AND)和按位或(OR)运算,变量都为整数且有一定的取值范围。请你编写程序,求出一个给定表达式的最大值。为了简化题目,这里只考虑一种特殊的表达式,它有若干个由 AND 连接的子表达式构成,而每个子表达式内只含有 OR 运算。这样,一个表达式可以由它的子表达式数量和每个表达式内变量的个数唯一确定。

例如,(3, 1, 2, 2)(3,\ 1,\ 2,\ 2) 表示的表达式为 $E=(v_1\ \texttt{OR}\ v_2\ \texttt{OR}\ v_3)\ \texttt{AND}\ (v_4)\ \texttt{AND}\ (v_5\ \texttt{OR}\ v_6)\ \texttt{AND}\ (v_7\ \texttt{OR}\ v_8)$。

输入格式

第一行为两个整数 NNPP,其中 NN 为变量的个数(1N1001\leq N\leq 100),PP 为子表达式的个数(1PN1\leq P\leq N)。

第二行为 PP 个整数 K1, K2, , KPK_1,\ K_2,\ \cdots,\ K_P,其中 KiK_i 表示第 ii 个子表达式的变量个数(Ki1K_i\geq 1i=1PKi=N\sum_{i=1}^P K_i=N)。

接下来 NN 行,每行两个整数 AjA_jBjB_j,表示变量 vjv_j 的取值范围为 [Aj, Bj][A_j,\ B_j]0AjBj2×1090\leq A_j\leq B_j\leq 2\times 10^9)。

输出格式

一个整数,表示表达式的最大值。

8 4
3 1 2 2
2 4
1 4
0 0
1 7
1 4
1 2
3 4
2 3
6