[ARC100E] Or Plus Max
令 \(b_k = \max_{i,j \subseteq k} a_i + a_j\)。
注意到 \(ans_k = \max_{i=1}^k b_i\)。
求证:\((i\vee j \le k) \Longleftrightarrow (\exist l \le k, \text{s.t. }i,j \subseteq l)\)。
首先明确 \(i \vee j \subseteq k\) 和 \(i,j \subseteq k\) 是等价的。
-
令 \(i \vee j = p \le k\),那么 \(l=p\) 时 \(i,j \subseteq p\)。所以左能推右。
-
显然 \(i,j \subseteq l\) 意味着 \(i \vee j \subseteq l\),所以 \(i \vee j \le l \le k\)。所以右能推左。
所以考虑求解 \(b_k\),即 \(\max_{i,j \subseteq k} a_i + a_j\)。
显然我们只需要求满足 \(i \subseteq k\) 的最大和次大的 \(a_i\)。高维前缀和即可。

浙公网安备 33010602011771号