问题描述
爱丽丝有一个容量背包m她现在想用一些物品填充!
爱丽丝有n项目,每个项目都有一个卷v我和值w我.
是否可以从n个项目中选择多个项目,以使背包完全装满(即体积的总和等于背包容量)?如果是这样,当背包装满时,背包中物品值的最大异或总和是多少?
输入
第一行包含整数T(T≤10)- 测试用例的数量。
每个测试用例的第一行包含 2 个整数n,m(1≤n,m<2^10)— 物品数量,背包容量。
下一个n行,每行包含 2 个整数v我,w我(1≤v我,w我<2^10)— 项目的数量和价值。 

输出

对于每个测试用例,输出一行,如果背包无法填充,只需输出一行“-1”,否则输出最大的XOR总和。
示例输入
1 5 4 2 4 1 6 2 2 2 12 1 14
示例输出
14
思路(照搬标程思路) :用bitset建立dp数组(f)在每一个bitset元素(f[j])中存储一个01串,某一位为1表示这个位置对应的容量m的异或和可以为j,用g数组拷贝f,然后每次加入一个容量v相当于把g左移v(相当于体积增加v时异或和为j的情况)状态转移为f[j]|=g[j^m1]  (感谢多校教我做人,孩子再也不敢了)
代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <bitset>
using namespace std;
const int N=1050;
int n,m;
bitset<N> f[N],g[N];void init(){for(int i=0;i<=1024;i++){f[i].reset();}f[0][0]=1;
}int main(){int t;cin>>t;while(t--){cin>>n>>m;init();for(int i=0;i<n;i++){int v,m1;cin>>v>>m1;for(int j=0;j<1024;j++){g[j]=f[j]; g[j]<<=v;//此时g为初状态}for(int j=0;j<1024;j++){f[j]|=g[j^m1];//此时f为末状态也就是(j^m1)^m1==j 注:“()”内为初状态 }}int ans=-1;for(int i=0;i<1024;i++){if(f[i][m]) ans=i;}cout<<ans<<endl;}return 0;
}

杭电多校第一场第三题 Backpack(异或dp+bitset)相关推荐

  1. 2019年杭电多校第一场 1001题blank(DP)HDU6578

    2019年杭电多校第一场 1001题blank(DP)HDU6578 解决思路,开一个DP数组来存储0 1 2 3四个字符最后出现的位置,并且在DP中已经==排好序==. DP开四维,DP[i][j] ...

  2. 2022“杭电杯”中国大学生算法设计超级联赛 (1) 杭电多校第一场 2 3 4 5 8 12

    题目 1002 Dragon slayer 标程 1003 Backpack AC代码 1004 Ball AC代码 1008 Path AC代码 1009 Laser AC代码 1012 Alice ...

  3. 2022杭电多校第一场

    A String 题意:求s串1-i(1 <i <n)子串的贡献,贡献为公共前后缀相交并且相交部分长度为k的倍数的数量 题解做法是用exkmp求出s串与所有后缀的LCP后,设LCP为x,那 ...

  4. 2019杭电多校第一场 Operation HDU - 6579

    题意:给出一个序列,两种操作,求区间[l,r]的区间最大异或和,和在末尾添加一个数 思路:强制在线,保存每个线性基的数值,接下去直接去搜第r个线性基,但要保持时间比l要大,新增了一个pos数组代表一个 ...

  5. HDU-6578 Blank(DP)2019暑假杭电多校第一场

    题意:一行有n个空格编号1~n; 每一个空格中填入0,1,2,3中的一个数字.且满足m个限制l,r,x:满足在区间[l,r]正好有x种不同的数字. 有多少种方法可以填充空格以满足所有条件? 思路:dp ...

  6. 2019杭电多校第一场 HDU 6599

    题解 枚举所有的回文串 注意,本质不同的回文串最多只有∣S∣|S|∣S∣个 在这些回文串中,有一些是满足要求的,我们对这些串打上标记 首先跑一个ManacherManacherManacher,然后枚 ...

  7. 2022 杭电多校 第一场

    文章目录 1011 Random 1012 Alice and Bob 1003 Backpack 1002 Dragon slayer 1009 Laser 1011 Random 签到 求一下期望 ...

  8. 2022“杭电杯”中国大学生算法设计超级联赛 (2) 杭电多校第二场

    题目 1001 Static Query on Tree AC代码 1002 C++ to Python AC代码 1003 Copy AC代码 1005 Slayers Come AC代码 1007 ...

  9. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)

    咕咕咕了太久  多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场-- 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...

最新文章

  1. Pytorch转TensorRT范例代码
  2. docker安装influxdb、grafana及展示数据到grafana
  3. 专家系统出现的计算机应用阶段,接本第一二章历年考题08-12
  4. 如何为你的博客园添加到百度统计
  5. HTML5 API详解(5):Page Visibility API帮您省流量,提高体验
  6. 编写一个函数把华氏温度转换为摄氏温度
  7. 猴子都能懂的数据库范式详解
  8. 数据挖掘概念与技术(原书第三版)范明 孟小峰译-----第二章课后习题答案
  9. 数电笔记之无关项化简逻辑函数
  10. android 蓝牙与单片机通信原理图,单片机结合蓝牙模块串口通信
  11. php 万能密码,网络安全系列之十 万能密码登录网站后台
  12. apdu 移动sim_在Android中将APDU命令发送到USIM / SIM卡
  13. 怎么用电脑操控自己的手机 怎样用电脑控制手机?
  14. 迈普交换机_配置手册_IS420
  15. 操作系统:动态分区存储(首次适应算法、最佳适应算法)
  16. 广成子:值得收藏-史上最全Linux ps命令详解
  17. 文字生成视频,清华出品
  18. CodeForces 711C Coloring Trees (三维DP)
  19. 论文MICO for MRI bias field estimation and tissue segmentation品讲
  20. IDL转换BSQ格式至BIL

热门文章

  1. 【DIY小记】解决CSGO打开游戏即闪退的问题
  2. python中三目运算符、推导式 ## 17
  3. 免费又好用的参考文献管理软件zotero该怎么使用?可以同时支持中文和英文吗?...
  4. JS逆向字体反爬,某供应商平台反爬实践
  5. 【常用电子元件】光敏二极管的简介与应用(实例:STM32监测光强)
  6. sim900a 裸AT通过GPRS网络发送接收数据
  7. 基于单片机的智能健康监护仪的设计(心电、心音、体温、脉搏、血压采集)
  8. Vue 3 中 v-if 和 v-show 指令实现的原理(源码分析)
  9. 如何判断app在前台还是后台
  10. 在window系统安装虚拟linux系统以及搭建web环境教程