Description

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

题目大意:给定n个数,从中挑选两个数进行&(and)运算,最大化&值并输出

题解:采取二进制高位到低位的贪心策略,即从高到低能变成1就变成1

那我们就考虑答案的倒数第i位是否可以选。

设当前ans为比第i位高的所有二进制位选择的最优情况的和,那么如果第i位能选,就必定在这n个数中至少有两个数满足:

1.当前答案中的所有二进制为1的位置,在相应的这个数中的位置也为1(即ans&a==ans);

2.这个数的二进制第i位为1(即a&(2^(i-1)==(2^(i-1)))。

所以,我们只需从高位向低位扫一遍就可以了。

时间:O(30*n)

空间:n

还有不懂的读者手推即可

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std; const int maxn=1e6+;
int n,ans;
int a[maxn];
inline int read()
{
char ch=getchar();
int s=,f=;
while (!(ch>=''&&ch<='')) {if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
int main()
{
freopen("sword.in","r",stdin);
freopen("sword.out","w",stdout);
n=read();
for (int i=;i<=n;i++)
a[i]=read();
for (int i=;i>=;i--)
{
int p=;
for (int j=;j<=n;j++)
{
if ((ans&a[j])==ans&&(a[j]&(<<i))) p++;
if (p>=) break;
}
if (p>=) ans+=<<i;
}
printf("%d\n",ans);
return ;
}

[JZOJ4274] [NOIP2015模拟10.28B组] 终章-剑之魂 解题报告(二进制)的更多相关文章

  1. [JZOJ4272] [NOIP2015模拟10.28B组] 序章-弗兰德的秘密 解题报告(树形DP)

    Description 背景介绍弗兰德,我不知道这个地方对我意味着什么.这里是一切开始的地方.3年前,还是个什么都没见过的少年,来到弗兰德的树下,走进了封闭的密室,扭动的封尘已久机关,在石板上知道了这 ...

  2. JZOJ 4273. 【NOIP2015模拟10.28B组】圣章-精灵使的魔法语

    4273. [NOIP2015模拟10.28B组]圣章-精灵使的魔法语 (File IO): input:elf.in output:elf.out Time Limits: 1000 ms  Mem ...

  3. JZOJ 4272. 【NOIP2015模拟10.28B组】序章-弗兰德的秘密

    272. [NOIP2015模拟10.28B组]序章-弗兰德的秘密 (File IO): input:frand.in output:frand.out Time Limits: 1000 ms  M ...

  4. [JZOJ 5908] [NOIP2018模拟10.16] 开荒(kaihuang)解题报告 (树状数组+思维)

    题目链接: https://jzoj.net/senior/#contest/show/2529/1 题目: 题目背景:尊者神高达作为一个萌新,在升级路上死亡无数次后被一只大黄叽带回了师门.他加入师门 ...

  5. [JZOJ 5909] [NOIP2018模拟10.16] 跑商(paoshang) 解题报告 (圆方树)

    题目链接: https://jzoj.net/senior/#contest/show/2529/2 题目: 题目背景:尊者神高达很穷,所以他需要跑商来赚钱题目描述:基三的地图可以看做 n 个城市,m ...

  6. [JZOJ 4307] [NOIP2015模拟11.3晚] 喝喝喝 解题报告

    题目链接: http://172.16.0.132/senior/#main/show/4307 题目: 解题报告: 题目询问我们没出现坏对的连续区间个数 我们考虑从左到有枚举右端点$r$,判断$a[ ...

  7. JZOJ 4269. 【NOIP2015模拟10.27】挑竹签

    4269. [NOIP2015模拟10.27]挑竹签 (File IO): input:mikado.in output:mikado.out Time Limits: 1000 ms  Memory ...

  8. 【剑指Offer】连续子数组的最大和 解题报告(Python)

    [剑指Offer]连续子数组的最大和 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  9. NOIP2015 提高组(senior) 解题报告

    过了这么久才来发解题报告,蒟蒻实在惭愧 /w\ Day1 T1 [思路] 模拟 [代码] #include<iostream> #include<cstring> #inclu ...

随机推荐

  1. 使用excel进行数据挖掘(3)----类别检測

    使用excel进行数据挖掘(3)----类别检測 在配置环境后,能够使用excel进行数据挖掘. 环境配置问题可參阅: http://blog.csdn.net/xinxing__8185/artic ...

  2. C++异常注意事项

    C++里面catch对于类型转换,限制比参数传递时候要多: 不可以进行标准算术转换和类的自定义转换:在函数参数匹配的过程中,可以进行很多的类型转换.但是在异常匹配的过程中,转换的规则要严厉. 标准算术 ...

  3. 练练脑,继续过Hard题目

    http://www.cnblogs.com/charlesblc/p/6384132.html 继续过Hard模式的题目吧.   # Title Editorial Acceptance Diffi ...

  4. [Python Test] Use pytest fixtures to reduce duplicated code across unit tests

    In this lesson, you will learn how to implement pytest fixtures. Many unit tests have the same resou ...

  5. Shuttle ESB实现消息推送

    ESB全称Enterprise Service Bus,即企业服务总线.它是传统中间件技术与XML.Web服务等技术结合的产物. ESB的出现改变了传统的软件架构,能够提供比传统中间件产品更为便宜的解 ...

  6. 公司--下载svg图片

    加载本地svg图片: SVGParserRenderer norDrawable = OtherPageConfigsManager.getInstance().getSVGParserRendere ...

  7. 那些年尝试过的效率工具之Total Commander

    昨天电脑文件很乱,想整理一下发现移动.复制文件要来回目录切换很麻烦,突然就又想起了用Total Commander——简称TC,很久之前尝试过但没坚持使用的工具. 借此机会总结一下自己对TC的认识,后 ...

  8. JS基本功 | JavaScript专题之数组 - 方法总结

    Array.map() 1.   map() 遍历数组 语法: let new_array = arr.map(function callback(currentValue, index, array ...

  9. @RequestMapping[转]

    转自 http://www.cnblogs.com/qq78292959/p/3760560.html#undefined 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST. ...

  10. Golang 中的 面向对象: 方法, 类, 方法继承, 接口, 多态的简单描述与实现

    前言: Golang 相似与C语言, 基础语法与C基本一致,除了广受争议的 左花括号 必须与代码同行的问题, 别的基本差不多; 学会了C, 基本上万变不离其宗, 现在的高级语言身上都能看到C的影子; ...