背景介绍

古堡,暗鸦,斜阳,和深渊……

等了三年,我独自一人,终于来到了这里……

“终焉的试炼吗?就在这里吗?”我自言自语道。

“终焉的试炼啊!就在这里啊!”我再一次自言自语道。

“这背后可能有那个东西吗?”我自言自语道。

“这背后一定有那个东西呢!”我又一次自言自语道。

我沉默着,踏上黑漆漆的索桥,小心翼翼地,拿出锋利的注入我灵魂的双剑……

“那么,我们开始吧……”我最后一次自言自语道。

题目描述

My soul of my sowrd!

终焉的试炼即将到来,作为一名有修养的剑士,虽然没有习得n刀流但是二刀流还是没问题的。然而我也是个剑的收藏者,家里屯着n把剑,每一把剑都有一个灵魂值a[i],由于一些剑之间可能有共鸣,所以我需要两把契合度最高的剑。据剑圣所说,两把编号为i,j剑的契合度为a[i] and a[j]。如何深得剑的灵魂呢?

注:AND 为按位与运算,先将数转成二进制,不满位数的补全0,然后成为两个长度相同的二进制数,处理的时候,两个相应的二进制位都为1,该位的结果值才为1,否则为0。例:0101(5) and 0011(3)=0001(1)

输入

第一行一个整数n,代表藏剑数。

第二行n个整数,第i个整数表示a[i]。

输出

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

思路

我们先测试几组数据。1.6 and 4=4. 2.6 and 2=2. 3.4 and 2=0.不难发现,两个数越大,运算出来结果越大。由此得出解法。

解法+时间复杂度

先从大到小快排(n log n),再n^2枚举。WTF!这你都过了?别急,听完嘛。如果我们and出来的数没上一次大,后面的数and出来一定没有这次大,我们就可以break了。所以总时间复杂度为O(n log n+玄(学))

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,i,u,k,a[1000001],b[1000001][32],xh,h[32][32],j,o[1000001];
long long ans;
bool bz,bj[1000001];
int ks(long long x)
{
if (x==0) return 1;
if (x==1) return 2; else
{
int s=x%2;
if (s==1) return ks(x/2)*ks(x/2)*2;else return ks(x/2)*ks(x/2);
}
}
int main()
{
freopen("sword.in","r",stdin);
freopen("sword.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%d",&a[i]);
while (a[i]!=0)
{
b[i][0]++;
b[i][b[i][0]]=a[i]%2;
a[i]/=2;
}
xh=max(xh,b[i][0]);
h[b[i][0]][0]++;
h[b[i][0]][h[b[i][0]][0]]=i;
}
bz=0;
for (i=xh;i>=1;i--)
{
if (bz==0)
{
k+=h[i][0];
for (j=1;j<=h[i][0];j++)
{
bj[h[i][j]]=1;
}
}
u=0;
for (j=1;j<=n;j++)
if (b[j][i]==1 && bj[j]==1) u++;else
{
o[0]++;
o[o[0]]=j;
}
if (u>=2)
{
ans+=ks(i-1);
for (j=1;j<=o[0];j++)
bj[o[j]]=0;
bz=1;
}
memset(o,0,sizeof(o));
}
printf("%lld",ans);
}

【NOIP2015模拟】终章-剑之魂的更多相关文章

  1. [JZOJ4274] [NOIP2015模拟10.28B组] 终章-剑之魂 解题报告(二进制)

    Description [背景介绍]古堡,暗鸦,斜阳,和深渊……等了三年,我独自一人,终于来到了这里……“终焉的试炼吗?就在这里吗?”我自言自语道.“终焉的试炼啊!就在这里啊!”我再一次自言自语道.“ ...

  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. BugPhobia终章篇章:学霸在线系统Beta阶段展示

    0x00 :序言 1 universe, 9 planets, 204 countries,809 islands, 7 seas, and i had the privilege to meet y ...

  5. C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.)

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 本系列,终 ...

  6. 史上最简单的 SpringCloud 教程 | 终章

    https://blog.csdn.net/forezp/article/details/70148833转载请标明出处:http://blog.csdn.net/forezp/article/det ...

  7. SpringBoot非官方教程 | 终章:文章汇总

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-all/ 本文出自方志朋的博客 SpringBo ...

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

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

  9. JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql

    JDBC终章- 使用 DBUtils实现增删查改 1.数据库结构 Create Table CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, ...

随机推荐

  1. golang的fmt

    前言 不做文字搬运工,多做思路整理 就是为了能速览标准库,只整理我自己看过的...... 注意!!!!!!!!!! 单词都是连着的,我是为了看着方便.理解方便才分开的 1.fmt 中文文档 [英文文档 ...

  2. Escalate_my_privilege 靶机

    1:扫描主机ip 2:扫描端口发现 22 80 111 3:目录扫描,发现一些平常的页面 4:进入robots.txt发现一个类型命令行的界面,查看是个低权限,但是在home目录下的armour发现密 ...

  3. 神经网络实现fashion数据集

    import tensorflow as tf import numpy as np fashion=tf.keras.datasets.fashion_mnist (x_train,y_train) ...

  4. 初始JAVA第十五章String的总结

    字符串的概述 1.什么是字符串:零个或多个字符组成的有限序列 2.如何使用字符串:(使用字符串分为两步) 1)定义并初始化字符串 2)使用字符,对字符串进行一些处理 // 穿件一个字符串 // 语法 ...

  5. Shell脚本之for循环语句的应用

    在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同.这时候可以使用for循环语句,针对不同的取值重复执行相同的命令序列. for循环语句的语法结构: ...

  6. docker入门4-docker stack

    stack介绍 stack是一组共享依赖,可以被编排并具备扩展能力的关联service.举例来说就是在swarm那章描述docker层次架构时,说stack就是一个完整的服务--它可以由基于flask ...

  7. phpstudy后门利用复现

    一.漏洞位置 程序自带的PHP的php_xmlrpc.dll模块中有隐藏后门,受影响的版本有phpstudy2016(php5.2/5.4).phpstudy2018(php5.2/5.4)等版本. ...

  8. SQL关键字的执行顺序

    1.Mysql执行顺序,即在执行时sql按照下面的顺序进行执行: from on join where group by having select distinct union order by 2 ...

  9. C++ IO的一些注意点

    读入这个坑一直以来都深受其麻烦,把遇到一些注意点记一下吧. 1.getchar读入 以前练线段树的时候做到Acwing#246 Interval GCD(原题在CodeHunter上,人懒就在Acwi ...

  10. 存储池与存储卷,使用virt-install创建虚拟机

    原文链接:https://www.cnblogs.com/zknublx/p/9199658.html 创建存储池 1.建立存储池的目录 mkdir /kvm/images 2.为了安全性,更改目录的 ...