2044. or找最大 然后 conut
##ㄙ路
好难ㄛ是不是要开bitmap==
1.
先找max好了
先猜prefix sum ,要cnt是不是要开线段树
不对欸是or不是xor
全部瞎鸡巴乱加就是maxㄌ
2.
有maxㄌ怎么找set
看一下constraint
len = 16 ,爆搜好了==
报搜好快
class Solution {
public:
int countMaxOrSubsets(vector<int>& nums) {
// find max
int maxi = nums[0];
for(int i: nums){
maxi |= i;
}
cout << maxi;
// conut
int res = 0;
cnt_max(maxi, nums, 0, 0, res);
return res;
}
void cnt_max(const int maxi, vector<int>& nums, int idx, int or_val, int& res){
if(idx == nums.size()){
if(or_val == maxi) res++;
return;
}
// get this
cnt_max(maxi, nums, idx+1, or_val | nums[idx], res);
// not get this
cnt_max(maxi, nums, idx+1, or_val, res);
}
};