1 条题解

  • 0
    @ 2026-10-31 13:32:25

    按位与

    从第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

    信息

    ID
    2325
    时间
    1000ms
    内存
    256MiB
    难度
    普及
    标签
    递交数
    1
    已通过
    1
    上传者