【NOIP2015模拟】终章-剑之魂
背景介绍
古堡,暗鸦,斜阳,和深渊……
等了三年,我独自一人,终于来到了这里……
“终焉的试炼吗?就在这里吗?”我自言自语道。
“终焉的试炼啊!就在这里啊!”我再一次自言自语道。
“这背后可能有那个东西吗?”我自言自语道。
“这背后一定有那个东西呢!”我又一次自言自语道。
我沉默着,踏上黑漆漆的索桥,小心翼翼地,拿出锋利的注入我灵魂的双剑……
“那么,我们开始吧……”我最后一次自言自语道。
题目描述
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模拟】终章-剑之魂的更多相关文章
- [JZOJ4274] [NOIP2015模拟10.28B组] 终章-剑之魂 解题报告(二进制)
Description [背景介绍]古堡,暗鸦,斜阳,和深渊……等了三年,我独自一人,终于来到了这里……“终焉的试炼吗?就在这里吗?”我自言自语道.“终焉的试炼啊!就在这里啊!”我再一次自言自语道.“ ...
- JZOJ 4273. 【NOIP2015模拟10.28B组】圣章-精灵使的魔法语
4273. [NOIP2015模拟10.28B组]圣章-精灵使的魔法语 (File IO): input:elf.in output:elf.out Time Limits: 1000 ms Mem ...
- JZOJ 4272. 【NOIP2015模拟10.28B组】序章-弗兰德的秘密
272. [NOIP2015模拟10.28B组]序章-弗兰德的秘密 (File IO): input:frand.in output:frand.out Time Limits: 1000 ms M ...
- BugPhobia终章篇章:学霸在线系统Beta阶段展示
0x00 :序言 1 universe, 9 planets, 204 countries,809 islands, 7 seas, and i had the privilege to meet y ...
- C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.)
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 本系列,终 ...
- 史上最简单的 SpringCloud 教程 | 终章
https://blog.csdn.net/forezp/article/details/70148833转载请标明出处:http://blog.csdn.net/forezp/article/det ...
- SpringBoot非官方教程 | 终章:文章汇总
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-all/ 本文出自方志朋的博客 SpringBo ...
- JZOJ 4269. 【NOIP2015模拟10.27】挑竹签
4269. [NOIP2015模拟10.27]挑竹签 (File IO): input:mikado.in output:mikado.out Time Limits: 1000 ms Memory ...
- JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql
JDBC终章- 使用 DBUtils实现增删查改 1.数据库结构 Create Table CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, ...
随机推荐
- wifi的前世今生
日常生活中,大家都把wifi等同于wlan,其实二者是不同的东西. wlan是无线局域网,是个技术,有这个技术,我们就可以无线上网了. wifi是wifi联盟,用来做无线产品之间兼容性认证的,当我们的 ...
- 2020-05-26:TCP四次挥手过程?
福哥答案2020-05-26:
- Vue 图片压缩上传: element-ui + lrz
步骤 安装依赖包 npm install --save lrz 在main.js里引入 import lrz from 'lrz' 封装 compress函数 封装上传组件 upload-image ...
- 三、HelloWorld
1.创建Hello.java 文件, 2.输入内容 public class Hello{ //公共类 Hello public static void main(String[] args){ // ...
- 【UVa1635】Irrelevant Elements - 唯一分解定理
题意 给你 \(n\) 个数,每次求出相邻两个数的和组成新数列.经过 \(n-1\) 次操作后,得到一个数.求这个数 \(mod \ m\) 与哪些项无关. 如:当 \(m=2 \ , \ n=2\) ...
- Vue源码解析,keep-alive是如何实现缓存的?
前言 在性能优化上,最常见的手段就是缓存.对需要经常访问的资源进行缓存,减少请求或者是初始化的过程,从而降低时间或内存的消耗.Vue 为我们提供了缓存组件 keep-alive,它可用于路由级别或组件 ...
- JavaScript学习系列博客_33_JavaScript String对象
String对象 在底层,字符串是以数组的形式保存的.比如说一个字符串"String"以["H","t","r",&qu ...
- redis 过期策略你知道多少,看完文章你会不自觉说喔哦
Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除.你可以想象 Redis 内部有一个死神,时刻盯着所有设置了过期时间的 key,寿命一到就会立即收割. 你还可以进一步站在死神的角度 ...
- Logistic回归之有序logistic回归分析
Logistic回归分析(logit回归)一般可分为3类,分别是二元logistic回归分析.多分类Logistic回归分析和有序Logistic回归分析.logistic回归分析类型如下所示. Lo ...
- 重拾Java Web应用的基础体系结构
目录 一.背景 二.Web应用 2.1 HTML 2.2 HTTP 2.3 URL 2.4 Servlet 2.4.1 编写第一个Servlet程序 2.5 JSP 2.6 容器 2.7 URL映射到 ...