51nod1315(位运算)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1315
题意:中文题诶~
思路:位或(|)运算是二进制位有一个为1就为1,否则为0.你们我们不难想到如果大于k的元素加入运算中其结果一定大于k, 与k异或结果大于k的元素加入运算中其结果一定不为k, 所以我们只要考虑剩下的元素就好了。剩下的也不难想到,对于当前二进制位,若k为1,那么我们可以把所有当前二进制位为1的元素去掉,其子集异或结果一定不为k;若k为0,那么我们可以把所有当前二进制位为0的元素去掉,其子集异或结果一定不为k. 我们只要取这些选择中最优的就是答案啦。。。
代码:
#include <bits/stdc++.h>
#define MAXN 60
using namespace std; int a[MAXN]; int main(void){
int n, k, ans=, x, pos=;
cin >> n >> k;
for(int i=; i<n; i++){
cin >> x;
if(x<=k&&(x|k)<=k){//**注意这里的括号一定不能少,被坑惨了。。。
a[pos++]=x;
ans|=x;
}
}
if(!pos||ans<k){
cout << << endl;
return ;
}
sort(a, a+pos);
int cnt=n, key;
while(k){
int cc=, gg=;
for(int i=; i<pos; i++){
if(!a[i]){
continue;
}
if(a[i]%){
cc+=;
}else{
gg+=;
}
a[i]>>=;
}
key=k%;
k>>=;
if(key){ //***k当前二进制位为1,我们可以选择把所有当前位二进制为1的元素删掉
cnt=min(cnt, cc);
}else{ //***k当前二进制位为0,我们可以选择把所有当前位二进制为0的元素删掉
cnt=min(cnt, gg);
}
}
cout << cnt << endl;
return ;
}
51nod1315(位运算)的更多相关文章
- Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range
在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...
- 简简单单学会C#位运算
一.理解位运算 要学会位运算,首先要清楚什么是位运算?程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),位运算就是直接对在内存中的二进制数的每位进行运算操作 二.理解数字进制 上面 ...
- SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解
本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表 位运算 SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...
- js中的位运算
按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是"位": 数值或字符在内存内都是被存储为0和 1的序列,每个0和1被称之为1个位,比如说10 ...
- Java中的位运算
昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~ 按位非(NOT)(一元运算) ...
- C#位运算讲解与示例
首先每一个权限数都是2的N次方数 如:k1=2 ; //添加 k2=4 ; //删除 k3=8; //修改 ... 如此定义功能权限数,当需要组合权限时,就需要对各个所拥有的权限数按位或了. 如: p ...
- C#枚举中的位运算权限分配浅谈
常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理. 第 ...
- Java位运算经典实例
一 源码.反码.补码 正数的源码.反码.补码相同,例如5: 5的源码:101 5的反码:101 5的补码:101 负数的源码.反码.补 ...
- C入门---位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算直接对整数在内存中的二进制位进行操作.由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快. (1),与(&)运算 ...
随机推荐
- DIV CSS 笔记
/*针对谷歌浏览器内核支持的CSS样式*/ <style type="text/css"> @media screen and (-webkit-min-device- ...
- 【VS】VS开发中遇到的问题的总结
1. VS中经常会出现无法解析的外部符号,还有LINK ERROR 2019等 这类问题如果检查代码没有错误,很大概率就是lib文件错误.调试程序找出问题函数,再找出问题函数使用到的lib文件,在项 ...
- redis源码笔记 - redis-cli.c
这份代码是redis的client接口,其和server端的交互使用了deps目录下的hiredis c库,同时,在这部分代码中,应用了linenoise库完成类似history命令查询.自动补全等终 ...
- Shiro 权限管理filterChainDefinitions过滤器配置
博客转载:http://blog.csdn.net/userrefister/article/details/47807075 /** * Shiro-1.2.2内置的FilterChain * @s ...
- 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...
- nginx利用proxy_cache来缓存文件
为什么要做web cache,我想大家最主要的是解决流量的压力.随着网站流量的提升,如果只是单台机器既处理静态文件,又处理动态脚本,显然效率很难上升,不能处理日益上涨的流量压力.与此同时某些网站的页面 ...
- 第 七 课 go的运算符
http://www.runoob.com/go/go-operators.html 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 返回变量存储地址: & 指针变量: ...
- 【转】Jquery折叠效果
转自:http://www.cnblogs.com/clc2008/archive/2011/10/25/2223254.html <!DOCTYPE html PUBLIC "-// ...
- hibernate 数据关联一对多
一对多,多对一 (在多的一端存放一的外键) 但是在实体类中不需要创建这个外键 // 在一的一方创建Set集合 public class User { private Integer id; priva ...
- PHP二维数组,根据多个字段来排序
如果是最最常见的二维数组排序, 大多数情况下也只用到二维: 用php内置函数 array_multisort( ) 是最简单的: <?php 假设, $arr 是一个二维数组, $arg1是取 ...