第一题:贪心,不难发现在位数限制范围内,只要n个数在某一位上并不都为1,那么该为一定可以通过 或 加到该位不为1的数上,所以答案就是总和+所有并不都为1的数位的总和(例如[110,111,100]二进制表示,所有并不都为1的位数的总和为011)。第二题:贪心,开个unordered_map<int,pair<int,int>>维护该数在<a,b>数组中的个数。从堆中不断弹出最大的元素然后将差值通过g(x)的方式往下缩即可。(优化方式1:记得判断该数是否已经进过堆,优化方式2:map改unordered_map)第三题:不会,打的暴力,请教各位大佬了ps:笔者未使用ai,也不清楚是否可以使用ai