清北学堂 清北-Day5-R2-xor
有 \(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的更多相关文章
- 清北学堂 清北-Day3-R2-打架 (fight)
题目描述 LYK有 \(n\) 个小朋友排成一排.第 \(i\) 个小朋友的战斗力是 $ a_i $,且他们的战斗力互不相同. 战斗力高的会打败战斗力低的. LYK想恶搞这些小朋友们,具体地,它有 \ ...
- 清北学堂 清北-Day1-R1-Count
题目描述 问有几个无序二元组 (x; y) 满足 xy ≡ 1 (mod P ); 0 ≤ x < P; 0 ≤ y <P.无序二元组是指,如果 P = 10, (3; 7) 和 (7; ...
- 清北学堂 清北-Day1-R2-监听monitor
题目描述 [背景] 不阅读本题的[背景]并不影响通过本题. 三体信息中没有包含对三体⼈⽣物形态的任何描述,⼈类要在四百多年以后才能真正看到三体⼈.在阅读信息时,叶⽂洁只能把三体⼈想象成⼈类的形象. 1 ...
- 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)
清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...
- 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)
清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...
- 济南清北学堂游记 Day 1.
快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...
- 清明培训 清北学堂 DAY1
今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1) 高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...
- 7月清北学堂培训 Day 3
今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: S ...
- 标清与高清,720p和1080p,720i和720p,h264与h265
480x320, 640x480 标清 1024x720p 高清 1920x1080i (隔行扫描) 也属于高清 1920x1080p 全高清 3840x2160,7680x4320 超(高)清 ...
随机推荐
- request.setCharacterEncoding()、response.setCharacterEncoding()的区别
request.setCharacterEncoding()是你设置获得数据的编码方式.response.setCharacterEncoding()是你响应时设置的编码.response.setCo ...
- 关于jQuery——attr方法和prop方法获取input的checked属性操作
经常使用jQuery插件的attr方法获取checked属性值,获取的值的大小为未定义,此时可以用prop方法获取其真实值,下面介绍这两种方法的区别: 1.通过prop方法获取checked属性,获取 ...
- Frameset 框架
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.c ...
- [C++]Linux之C编程异常[true未定义解决方案]
C语言里面是没有bool(布尔)类型的,C++里面才有,这就是说,在C++里面使用bool类型是没有问题的.bool类型有只有两个值:true =1 .false=0. 但是,C99标准里面,又定义了 ...
- :target方法实现切换
<!DOCTYPE HTML><html><head> <title>:target切换</title> <meta charset= ...
- JavaScript面试技巧(二):JS-Web-API
1.从基础知识到JSWebAPI 2.DOM 本质 节点操作 结构操作 3.BOM 4.事件 5.Ajax XMLHttpRequst 跨域 6.存储
- JDK1.8源码分析之Comparable && Comparator
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util. ...
- 如何快速上手一个新技术之vue学习经验
碰到紧急项目挪别人的vue项目过来直接改,但是vue是18年初看过一遍,18年底再来用,早就忘到九霄云外了,结果丢脸的从打开vue开始学,虽然之前在有道云笔记做了很多记录,然后没有系统整理.所以借这次 ...
- Python API简单验证
前言 因为CMDB内部的需求,需要一个API进行数据传输,用来传递需要抓取的服务端信息信息给抓取的autoclient,autoclient抓取好之后再通过API传输到服务器,保存到数据库.但是为了防 ...
- vmware常用命令
控制台桌面执行快捷键ctrl+alt+f2 可以进入命令行