zoukankan      html  css  js  c++  java
  • 4274. 【NOIP2015模拟10.28B组】终章-剑之魂

    Description

    【背景介绍】
    古堡,暗鸦,斜阳,和深渊……
    等了三年,我独自一人,终于来到了这里……
    “终焉的试炼吗?就在这里吗?”我自言自语道。
    “终焉的试炼啊!就在这里啊!”我再一次自言自语道。
    “这背后可能有那个东西吗?”我自言自语道。
    “这背后一定有那个东西呢!”我又一次自言自语道。
    我沉默着,踏上黑漆漆的索桥,小心翼翼地,拿出锋利的注入我灵魂的双剑……
    “那么,我们开始吧……”我最后一次自言自语道。
    【题目描述】
    My soul of my sowrd!
    终焉的试炼即将到来,作为一名有修养的剑士,虽然没有习得n刀流但是二刀流还是没问题的。然而我也是个剑的收藏者,家里屯着n把剑,每一把剑都有一个灵魂值a[i],由于一些剑之间可能有共鸣,所以我需要两把契合度最高的剑。据剑圣所说,两把编号为i,j剑的契合度为a[i] and a[j]。如何深得剑的灵魂呢?
    注:AND 为按位与运算,先将数转成二进制,不满位数的补全0,然后成为两个长度相同的二进制数,处理的时候,两个相应的二进制位都为1,该位的结果值才为1,否则为0。例下图。
     

    Input

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

    Output

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

    Sample Input

    5
    12 5 6 3 1

    Sample Output

    4
    【样例解释】
    5 and 6=4或者12 and 5=4或者12 and 6=4
     

    Data Constraint

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

    思路:

    这道题主要考察的是玄学位运算,

    并且我们要知道,$2^{0}+2^{1}+...+2^{n}=2^{n+1}-1$

    所以我们只要将这些数字转化为二进制的形式,从高位往低位扫下去就行。

    代码:

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #define R register
    using namespace std;
    typedef long long ll;
    const ll N=1000010;
    /*inline ll read(){
        ll x=0,t=1;
        char ch=getchar();
        while(ch<'0' || ch>'9') {
            t=-1;
            ch=getchar();
        }
        while(ch>='0' && ch<='9'){
            x=x*10+(ch-'0');
            ch=getchar();
        }
        return x*t;
    }*/
    ll n,a[N];
    int main(){
        freopen("sword.in","r",stdin);
        freopen("sword.out","w",stdout);
        scanf("%lld",&n);
        for(R ll i=1;i<=n;i++)
        scanf("%lld",&a[i]);
        ll ans=0,t=0;
        for(R ll i=30;i>=0;i--){ 
            t=0;
            for(R ll j=1;j<=n;j++)
            if((ans&a[j])==ans && (a[j]&(1<<i))!=0) t++;
            if(t>=2) ans+=(1<<i);
        }
        printf("%lld",ans);
    }
  • 相关阅读:
    托付和事件的使用
    在使用supervisord 管理tomcat时遇到的小问题
    无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
    (转)Openlayers 2.X加载高德地图
    (转)openlayers实现在线编辑
    (转) Arcgis for js加载百度地图
    (转)Arcgis for js加载天地图
    (转) 基于Arcgis for Js的web GIS数据在线采集简介
    (转) Arcgis for js之WKT和GEOMETRY的相互转换
    (转)Arcgis for Js之Graphiclayer扩展详解
  • 原文地址:https://www.cnblogs.com/yuzhe123/p/13372602.html
Copyright © 2011-2022 走看看