CF1365E Maximum Subsequence Value(鸽巢原理)

因为题目已知至少要k-2个

假设我们取了k个,使得答案最大

那么因为对于每个数来说至少k-2个数在这位是1

因此我们只要任意选三个数,都能保证在每一位上都有至少一个数为1

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll a[N];
int main(){
    int n;
    cin>>n;
    int i;
    for(i=1;i<=n;i++){
        cin>>a[i];
    }
    ll ans=0;
    if(n==1){
        cout<<a[1]<<endl;
    }
    else if(n==2){
        cout<<(a[1]|a[2])<<endl;
    }
    else{
      int j,k;
      for(i=1;i<=n;i++){
        for(j=i+1;j<=n;j++){
            for(k=j+1;k<=n;k++)
                ans=max(ans,a[i]|a[j]|a[k]);
        }
      }
      cout<<ans<<endl;
    }


}
View Code
复制代码

 

posted @   朝暮不思  阅读(140)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示