有 \(n\) 个物品,每个物品有两个属性 \(a_i,b_i\) ,挑选出若干物品,使得这些物品 \(a_i\) 的异或和 \(x \le m\).问在这一限制下,\(b_i\) 的总和最大可能为多少.

输入

输入文件名为xor.in。

第一行两个数 \(n,m (n \le 32)\)

接下来n行每行两个数 \(a_i\) 和 \(b_i\)

输出

输出文件名为xor.out。

一个数表示答案

样例输入

4 5
1 2
2 1
3 3
4 1

样例输出

7

提示

【数据说明】

对于30%的数据,$1 \le n \le 20,1 \le a_i , m<2^{30} $

对于另外30%的数据,$1 \le n \le 32,1 \le a_i , m < 2^{18} $

对于100%的数据,\(1 \le n \le 32,1 \le a_i , m < 2^{30},b[i] \le 10^6\)

本来我又以为是个神仙DP.....比如什么EX背包啊啥的

但是转眼一看数据范围—— \(meet \: in \: the \: middle\) 啊

但是我不想写,于是就写了一个彻彻底底的爆搜!

然后....然后就A了,爆搜也没什么好讲的,直接上代码吧:

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#define ll long long
#define max(a,b) (a>b?a:b) const ll N = 40; struct things{ll weight,value;}t[N]; ll ans,sum[N],n,m; inline bool cmp(const things&a,const things&b){return a.value > b.value;} inline void dfs(ll wet,ll val,ll step){
if(wet <= m) ans = max(ans,val);
if(step >= n + 1) return ;
if(sum[step] + val <= ans) return ;
dfs(wet ^ t[step].weight , val + t[step].value , step + 1);
dfs(wet , val , step + 1);
return ;
} int main(){
scanf("%lld%lld",&n,&m);
for(int i = 1 ; i <= n ; ++ i) scanf("%lld%lld",&t[i].weight,&t[i].value);
std::sort(t + 1 , t + n + 1 , cmp);
for(int i = n ; i >= 1 ; -- i) sum[i] = sum[i + 1] + t[i].value;
dfs(0,0,1);printf("%lld\n",ans);
return 0;
}

清北学堂 清北-Day5-R2-xor的更多相关文章

  1. 清北学堂 清北-Day3-R2-打架 (fight)

    题目描述 LYK有 \(n\) 个小朋友排成一排.第 \(i\) 个小朋友的战斗力是 $ a_i $,且他们的战斗力互不相同. 战斗力高的会打败战斗力低的. LYK想恶搞这些小朋友们,具体地,它有 \ ...

  2. 清北学堂 清北-Day1-R1-Count

    题目描述 问有几个无序二元组 (x; y) 满足 xy ≡ 1 (mod P ); 0 ≤ x < P; 0 ≤ y <P.无序二元组是指,如果 P = 10, (3; 7) 和 (7; ...

  3. 清北学堂 清北-Day1-R2-监听monitor

    题目描述 [背景] 不阅读本题的[背景]并不影响通过本题. 三体信息中没有包含对三体⼈⽣物形态的任何描述,⼈类要在四百多年以后才能真正看到三体⼈.在阅读信息时,叶⽂洁只能把三体⼈想象成⼈类的形象. 1 ...

  4. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

  5. 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)

    清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...

  6. 济南清北学堂游记 Day 1.

    快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...

  7. 清明培训 清北学堂 DAY1

    今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1)   高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...

  8. 7月清北学堂培训 Day 3

    今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: S ...

  9. 标清与高清,720p和1080p,720i和720p,h264与h265

    480x320, 640x480 标清 1024x720p 高清 1920x1080i (隔行扫描) 也属于高清 1920x1080p 全高清 3840x2160,7680x4320 超(高)清   ...

随机推荐

  1. 什么是CMD

    cmd是command的缩写.命令提示符是在操作系统中,提示进行命令输入的一种工作提示符.在不同的操作系统环境下,命令提示符各不相同. 在windows环境下,命令行程序为cmd.exe,是一个32位 ...

  2. Groovy 设计模式 -- 抽象工厂 模式

    抽象工厂 https://blog.csdn.net/wyxhd2008/article/details/5597975 首先来看看这两者的定义区别: 工厂模式:定义一个用于创建对象的借口,让子类决定 ...

  3. ASP.NET MVC之视图传参到控制器的几种形式

    1. 传递数组 $(function () { var value = ["C#", "JAVA", "PHP"]; $("inp ...

  4. Docker 创建容器 查看容器状态 - 三

    Docker 创建容器 1.拉取镜像 默认是 docker.io 仓最新镜像 docker pull tomcat 2.运行一个服务容器 docker run -d -p 0.0.0.0:18080: ...

  5. 第26月第26天 Domain=AVFoundationErrorDomain Code=-11850

    1. curl -voa http://119.29.108.104:8080/inweb01/kotlin.mp4 -H "Range:bytes=0-1" https://al ...

  6. linux下socket的连接队列的 backlog的分析

    建立socket连接的过程 1:client发syn请求给server 2:server收到后把请求放在syn queue中,这个半连接队列的最大值是系统参数tcp_max_syn_backlog定义 ...

  7. webwork框架

    以前都没有用过WebWork这个框架,只是听说过.没想到现在要用,所以就自学了一下.做了个小例子给大家分享下中间遇到的苦难和经验. 准备工作:首先要去下载WebWork框架的开发包.我用的2.2.6版 ...

  8. HDFS笔记(二)

    fsimage : NameNode启动时,对文件系统的快照 eidt logs : NameNode启动后,对文件系统的改动序列 namenode在全局里就一个进程,所以存在单点问题 DataNod ...

  9. DeepLearning.ai-Week2-Residual Networks

    1 - Import Packages import numpy as np from keras import layers from keras.layers import Input, Add, ...

  10. shell编程 之 流程控制(条件语句和循环语句)

    1 if ...else... 基本格式: if condition then commend else commend fi 当然也可以写到一行,用[ ]表明边界,用:表示分行.比如: if [ $ ...