题目描述

“I have a pen,I have an apple.Eh,Apple-Pen!.

I have a pen,I have pineapple.En,Pineapple-Pen!

Apple-Pen,Pineapple-Pen.Eh,Pen-Pineapple-Apple-Pen!”

Akn最近中毒于一首音乐,于是他买来了一堆苹果来学习这首音乐。Akn发现,只要边唱这首歌,边做把两个完整的苹果碰在一起的动作,两个苹果就会融合成一个新的大苹果,但是大苹果却不能再融合,因为他的细胞内部结构已经改变。Akn还发现,当两个苹果融合的时候,苹果的质量会发生一些玄妙的改变,就是与运算(a&b)。但是,最近他的同学找他要一个苹果吃,akn出于好心,准备把他学习ppap用的苹果融合成的大苹果给同学吃,好让同学一起中毒于ppap,而且akn还想让大苹果的质量最大,那么请问akn能给同学吃的苹果质量最大是多少?

输入输出格式

输入格式:

第一行包含一个整数T,表示数据组数

接下来T组数据,每组数据第一行包含一个整数n,表示n个苹果

第二行包含n个整数wi,表示第i个小苹果重wi kg

输出格式:

每组数据输出一行一个整数大苹果最大的质量,注意格式,Case #x: ans,case和#间有空格,:和ans之间有空格

输入输出样例

输入样例#1:

3
4
1 3 5 7
10
32 54 21 52 14 25 92 75 14 27
21
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576
输出样例#1:

Case #1: 5
Case #2: 72
Case #3: 0

说明

由于数据包大小限制,故只上传部分数据(第1,2,3,4,5,6,7,8,10,11,12,13,16,19,20点)

第一组数据解释:

1(2)=1
3(2)=11
5(2)=101
7(2)=111

选取5和7进行融合最终得到答案5

数据范围

10%的数据n≤5000,t≤1

另有10%的数据n≤2000,t≤6

另有20%的数据a≤2^10

另有5%的数据n≤10^5,a≤2^20,最大的两个数相等

另有20%的数据n≤10^4,a≤2^15

另有15%的数据n≤10^5,a≤2^20,t≤6

另有15%的数据n≤10^5,a≤2^20,t≤12

100数据n≤10^5,a≤2^20,t≤20

By:worcher

一道披着位运算色彩的贪心题目。开始想先手动模拟一下样例,第二个数据模拟了好久。win10自带的计算器是骗子==And运算都是错误,被这里蒙蔽了好久==。所以还是自己写程序输出二进制数比较好==。

开始只能想到n方算法,但是 交上去只有7分,百思不得其解。觉得应该是找规律的,最长后缀匹配??

正解:按位贪心。因为序列中的数最大为2^20,所以从20到0倒序枚,找二进制位最高为1的数,然后找次高位为1时从是最高位的数中找出,时间复杂度为O(20n)。也就是每次都更新序列,找到可行的,再从其中计算。

 #include<cstdio>
#include<algorithm> using namespace std;
typedef long long ll; int n,T,ans,cnt;
int seq[],neww[]; int main()
{
scanf("%d",&T);
for(int qwq=;qwq<=T;qwq++)
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&seq[i]);
for(int k=;k>=;k--)
{
cnt=;
for(int i=;i<=n;i++)
if((<<k)&seq[i]) neww[++cnt]=seq[i];
if(cnt>)
{
for(int i=;i<=cnt;i++) seq[i]=neww[i];
n=cnt;
}
}
printf("Case #%d: %d\n",qwq,seq[]&seq[]);
}
return ;
}

Luogu P2326 AKN's PPAP【按位贪心】的更多相关文章

  1. P2326 AKN’s PPAP

    P2326 AKN’s PPAP比较裸的贪心从高位向下枚举,如果当前位为1的个数大于1,ans+=(1<<i),然后从这些数中再向下枚举. #include<iostream> ...

  2. l洛谷 P2326 AKN’s PPAP

    P2326 AKN’s PPAP 题目描述 “I have a pen,I have an apple.Eh,Apple-Pen!. I have a pen,I have pineapple.En, ...

  3. 洛谷P2326 AKN’s PPAP

    https://www.luogu.org/problemnew/show/P2326 按位贪心 找到最高位&1的数,确定次高位的时候只从最高位&1的数里选 此次类推 #include ...

  4. 【BZOJ-4245】OR-XOR 按位贪心

    4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 486  Solved: 266[Submit][Sta ...

  5. [HDOJ - 5208] Where is Bob 【DFS+按位贪心】

    题目链接:HDOJ - 5208 题目分析 使用按位贪心的思想,即从高位向低位枚举,尽量使这一位的答案为 1 . 我们使用 DFS ,每次就是对于  [l1, r1] [l2, r2] x  进行处理 ...

  6. [APIO2015]巴厘岛的雕塑[按位贪心+dp]

    题意 给你长度为 \(n\) 的序列,要求分成 \(k\) 段连续非空的区间,求所有区间和的 \(or\) 最小值. 分析 定义 \(f_{i,j}\) 表示前 \(i\) 个点分成 \(j\) 段的 ...

  7. 【BZOJ4069】[Apio2015]巴厘岛的雕塑 按位贪心+DP

    [BZOJ4069][Apio2015]巴厘岛的雕塑 Description 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 N 座雕塑,为方便起见,我们把这些雕塑从 ...

  8. bzoj 4245: [ONTAK2015]OR-XOR【按位贪心】

    知道按位贪心但是不知道怎么贪-- 求一个a的异或前缀和s,然后按位从大到小贪心,ans的当前位能为0的条件是s中有>=m个位置这一位为0且没有flag,并且s[n]的这一位为0 如果符合要求,那 ...

  9. P3293 [SCOI2016]美味 主席树+按位贪心

    给定长度为 \(n\) 序列 \(a[i]\) ,每次询问区间 \([l,r]\) ,并给定 \(b,x\) 中的一个数 \(p=a[i]\) ,使得最大化 \(b \bigoplus p^x\) 主 ...

随机推荐

  1. 【转载】Http协议与TCP协议简单理解

    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...

  2. 怎样更改Linux中默认的openjdk为自己安装的JDK

    (1)/etc/profileexport JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/export PATH=$PATH:$JAVA_HOME/binexpor ...

  3. 软件版本号(BETA、RC、ALPHA、Release、GA等)

    Alpha:        Alpha是内部测试版,一般不向外部发布,会有很多Bug.除非你也是测试人员,否则不建议使用.是希腊字母的第一位,表示最初级的版本,alpha 就是α,beta 就是β , ...

  4. set -- $variable

    1 set --的用途 给位置参数赋值. 2 $variable是如何赋值给位置参数的 假如variable=a b c?或者variable=a;b;c? 这里果然和IFS有关,默认情况下,vari ...

  5. 锁粒度 Deadlocks

    锁粒度 MySQL :: MySQL 5.7 Reference Manual :: 14.5.2.4 Locking Reads https://dev.mysql.com/doc/refman/5 ...

  6. Qt & opencv 学习(一)

    Qt也没怎么系统学过,opencv也没系统学过.慢慢来,一步一步弄清楚吧. 天嵌科技有个文档,先去看这个文档,主要是开发环境的配置.文档名字就是QT应用程序开发手册-20150918.pdf.在QT里 ...

  7. Java IO、BIO、NIO、BIO

    一.什么是IO/NIO: IO:即BIO(Blocking IO):面向流的.同步阻塞式IO:(JDK1.4之前唯一的选择) NIO:面向缓冲的.同步非阻塞式IO:三大核心部分:Selector.Ch ...

  8. input框只允许输入正整数、正数(包含小数)的解决方法 vue.js实现

    我来打自己脸了!!!!...刚刚发现在中文输入法下是无效的,有人能解决这个问题么 如果要求input只能输入数字怎么做? 设置type="number" ? 那我如果想限制长度,此 ...

  9. 使用Windows Debugger调试托管代码----引用自官方帮助文档

    以下文字引用在Windbg的帮助文档.觉得对初次调试托管代码,非常有用,故粘贴至此. ========================================================= ...

  10. codeforces 435 B. Pasha Maximizes 解题报告

    题目链接:http://codeforces.com/problemset/problem/435/B 题目意思:给出一个最多为18位的数,可以通过对相邻两个数字进行交换,最多交换 k 次,问交换 k ...