
Problem: 1803. 统计异或值在范围内的数对有多少统计频次的然后排序计算的时候剪枝a hh low的跳过若 hh - a high也需要跳过hh a是 hh ^ a 的最大值 hh - a是最小值Codeclass Solution { public: vectorint ump; int countPairs(vectorint nums, int low, int high) { int a, hh, c, sum 0; ump.assign(20001, 0); for(int i : nums) ump[i]; nums.clear(); for(int i 0; i 20001; i) { if(ump[i] 0) nums.push_back(i); } sort(nums.begin(), nums.end()); int n nums.size(); for(int i 0; i n; i) { a nums[i]; for(int j i 1; j n; j) { hh nums[j]; if((a | hh) low) continue; c (a ^ hh); if( c low c high) sum ump[a] * ump[hh]; if(hh - a high) break; } } return sum; } };