1 条题解
-
0
按位与
从第29位到第0位尝试置1。设候选掩码为t,统计满足(a[i]&t)==t的元素数,达到m则接受该位。这些元素任取m个,其按位与包含t的全部1位;少于m则任何选择都不可能包含t。高位优先于所有低位之和,因此逐位保留可行高位得到最大值。O(30n)时间、O(n)空间。
难度:4(geekpi-9-v2),依据:由高位到低位构造答案,用满足候选掩码的元素数量判可行,需论证贪心。
#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std;int main(){int n,m;cin>>n>>m;vector<int>a(n);for(auto&x:a)cin>>x;int ans=0;for(int b=29;b>=0;b--){int t=ans|(1<<b),cnt=0;for(int x:a)if((x&t)==t)cnt++;if(cnt>=m)ans=t;}cout<<ans<<"\n";}本数据为GeekPi自建训练数据,非官方评测数据。
- 1