NC232177 野比大雄的作业(思维,位运算)

题意:

求数组中值最大的子段的值。一个子段的值定义为子段中所有数的按位与和+按位或和。

思路:

只取一个最大的数 \(x\)(区间长度为1)时,答案最大。此时区间按位与和按位或均为 \(x\),答案为 \(2x\)

解释:假设取的子段包含最大值 \(x\) 和其他一些数。若存在某个数的最高位比 \(x\) 小,那么子段的按位与和必然失去这个最高位,子段的值肯定比只取 \(x\) 小;若 \(x\) 的最高位是所有数共有的,就忽略这一位,直到找到第一个 \(x\) 拥有但是某个数没有的位为止。

posted @ 2022-03-13 00:33  Bellala  阅读(63)  评论(0)    收藏  举报