题目链接: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 ;
}

最新文章

  1. Android随笔之——按键长按事件onKeyLongPress
  2. Recylerview的使用系列教程
  3. [转]JavaScript字符串函数大全
  4. 外国类似stackoverflow这样的网站访问慢怎么解决-遁地龙卷风
  5. 移动开发流量省起来之Zepto
  6. Oracle linux6.1配置yum本地源
  7. 计算机图形学——OpenGL开发库开发库
  8. VS编译出现 HTTP 错误 403.14 - Forbidden 决绝办法
  9. linux学习笔记之进程
  10. 异常关闭MyEclipse 8.6后,不能重启
  11. (2) 用DPM(Deformable Part Model,voc-release4.01)算法在INRIA数据集上训练自己的人体检測模型
  12. 201521123097《Java程序设计》第九周学习总结
  13. 或许你不知道的10条SQL技巧
  14. node之querystring模块
  15. MongoDB + Express 环境搭建记
  16. Django之CRM项目Day4-编辑客户 公私户 模糊查询
  17. jmeter connection reset解决方法
  18. github上总结的python资源列表【转】
  19. java 代码获取视频时长
  20. http协议下载文件

热门文章

  1. Hibernate学习---第十三节:hibernate过滤器和拦截器的实现
  2. Java_异常_05_ OutOfMemoryError: Java heap space
  3. Java企业微信开发_00_源码及资源汇总贴
  4. BEC listen and translation exercise 49
  5. gcc 4.8.5安装
  6. 【leetcode刷题笔记】Gas Station
  7. [Ural1099]工作安排 带花树
  8. bzoj 1941 Hide and Seek —— K-D树
  9. bzoj 3157 &amp; bzoj 3516 国王奇遇记 —— 推式子
  10. UML核心元素--包