NC232177 野比大雄的作业(思维,位运算)
题意:
求数组中值最大的子段的值。一个子段的值定义为子段中所有数的按位与和+按位或和。
思路:
只取一个最大的数 \(x\)(区间长度为1)时,答案最大。此时区间按位与和按位或均为 \(x\),答案为 \(2x\)
解释:假设取的子段包含最大值 \(x\) 和其他一些数。若存在某个数的最高位比 \(x\) 小,那么子段的按位与和必然失去这个最高位,子段的值肯定比只取 \(x\) 小;若 \(x\) 的最高位是所有数共有的,就忽略这一位,直到找到第一个 \(x\) 拥有但是某个数没有的位为止。

浙公网安备 33010602011771号