当前位置: 首页 > article >正文

2024牛客寒假算法基础集训营1——H


 

输入

3
4 11
1 8
1 4
1 5
1 1
4 11
5 8
1 4
1 5
1 1
4 0
2 0
0 0
3 0
4 1

输出

3
6
5

思路:

考虑二进制,有点像数位dp

本题考虑集合划分,累加最大值即可

代码如下:

#include<bits/stdc++.h>
using namespace std;

void solve()
{
	int n, m; cin >> n >> m;
	vector<int>v(n), w(n);
	for(int i = 0; i < n; i ++){
		cin >> v[i] >> w[i];
	}
	int ans = 0, pre = 0;
	for(int i = 31; i >= 0; i --){
		int x = pre;//置为前缀
		if((m >> i) & 1){
			x += (1 << i) - 1;//不选这一位是1,贪心出最大情况
			pre += (1 << i);//更新前缀
		}

		int sum = 0;
		for(int j = 0; j < n; j ++){
			if((x | w[j]) == x){
				sum += v[j];
			}
		}
		ans = max(ans, sum);
	}

    //补上x==m这种情况
	int sum = 0;
	for(int j = 0; j < n; j ++){
		if((m | w[j]) == m){
			sum += v[j];
		}
	}
	
	ans = max(ans, sum);

	cout << ans << endl;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int t;
	//t = 1;
	cin >> t;
	while(t--)
	solve();
}

http://www.kler.cn/a/233545.html

相关文章:

  • Wireshark
  • 1小时构建Vue3知识体系之vue的生命周期函数
  • jenkins提交gitee后自动部署
  • 【p2p、分布式,区块链笔记 DAM】GUN/SEA(Security, Encryption, Authorization) 模块genkey
  • 【JAVA】正则表达式中的中括弧
  • 《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信
  • 算法竞赛进阶指南——搜索
  • 鸿蒙学习-app.json5配置文件
  • EMNLP 2023精选:Text-to-SQL任务的前沿进展(下篇)——Findings论文解读
  • Blazor Wasm Gitee 码云登录
  • EMC学习笔记(二十三)降低EMI的PCB设计指南(三)
  • 四、机器学习基础概念介绍
  • 一文彻底搞懂Kafka如何保证消息不丢失
  • Arthas使用教程—— 阿里开源线上监控诊断产品
  • 数据结构-并查集
  • 力扣231. 2 的幂(数学,二分查找,位运算)
  • H5/CSS 笔试面试考题(61-70)
  • TCP 传输控制协议——详细
  • Java强训day16(选择题编程题)
  • 【项目问题解决】java. net.SocketException: Connection reset
  • python命令行参数Argparse
  • Django(十)
  • rtt设备io框架面向对象学习-框架
  • 探索C语言的内存魔法:动态内存管理解析
  • 6 scala-面向对象编程基础
  • [word] word2019段落中创建纵横混排的方法图解教程 #知识分享#其他#职场发展