zoukankan      html  css  js  c++  java
  • 庭师的利刃

    问题 B: 庭师的利刃

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 369  解决: 91
    [提交] [状态] [讨论版] [命题人:]

    题目描述

    作为白玉楼的庭师,妖梦虽然不会n刀流,但是却领悟了生命二刀流。然而我也是个剑的收藏者,家里屯着n把剑,每一把剑都有一个灵魂值a[i],由于一些剑之间可能有共鸣,所以我需要两把契合度最高的剑。据妖梦所说,两把编号为i,j剑的契合度为a[i] and a[j]。如何深得剑的灵魂呢?(即求最大值)

    输入

    第一行一个整数n,代表藏剑数。
    第二行n个整数,第i个整数表示a[i]。

    输出

    输出包含一个正整数,最好的两把剑的契合度。

    样例输入

    5
    12 5 6 3 1
    

    样例输出

    4
    

    提示

    对于40%的数据 n ≤ 1,000
    对于100%的数据 n ≤ 1,000,000,0 ≤ a[i] < 2^31

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <deque>
    #include <map>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    LL aa[1000005],ans;
    int n;
    void init(){
        cin>>n;
        range(i,1,n)cin>>aa[i];
    }
    void solve(){
        rerange(i,31,1) {
            int tmp = 0;
            range(j, 1, n)if (((ans & aa[j]) == ans) && (aa[j] & (1 << (i - 1))))++tmp;
            if (tmp >= 2)ans += (1 << (i - 1));
        }
        cout<<ans<<endl;
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code

  • 相关阅读:
    第12组 Alpha事后诸葛亮
    第12组 Alpha冲刺(6/6)
    第12组 Alpha冲刺(5/6)
    2019 SDN上机第4次作业
    2019 SDN阅读作业
    第12组 Alpha冲刺(4/6)
    第12组 Alpha冲刺(3/6)
    第12组 Alpha冲刺(2/6)
    2019 SDN上机第3次作业
    第10组 Alpha冲刺(4/6)
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9349856.html
Copyright © 2011-2022 走看看