呜啦啦啦啦啦啦~~!!SNNU首届女装T走秀大赛开始了!

本次比赛共有N名队员希望参加比赛;ddjing希望这次比赛尽可能的吸睛,因此他决定对N名队员进行一次海选;

多亏ddjing有一双发现美的眼睛,他发现,每个人都有一个乃至多个的个性,ddjing把这些个性编号为1~M(1<=M<=10);此外,他还发现,每个人都有自己的魅力值Q(1<=Q<=1000)。

ddjing有很严重的强迫症,乃至强迫癌晚期,因此通过这次选拔后,他希望每种个性都只能出现奇数次;在这种前提下,本次女装大赛的出场人员魅力值总和最大是多少?

输入

第一行一个数T(1<=T<=50),表示数据组数。对于每一组数据:

第一行两个数N,M(1<=N<=1000,1<=M<=10)

接下来每两行描述一名参赛人员。对于每一名参赛人员:

第一行两个数Q和S,表示其魅力和所含个数数量(1<=Q<=1000,1<=<S<=M)

第二行S个数,表示他拥有的个性编号(1<=编号<=M)

输出

输出本次比赛的出场人员魅力总和最大值,不存在则输出-1。

样例输入

1

3 2

2 1

1

2 1

2

5 2

1 2

样例输出

5

 

 

题解思路:

将每个人的个性压缩成二进制位,通过异或来判断出现次数的奇偶,然后用这个数当成物品的体积,最终状态为2^m -1,这样就可以将问题转化成01背包。

由于是异或背包,所以直接用一维数据有可能导致某些“物品”或者“容量”被重复操作,因此至少需要2个数组来保存上一状态和当前状态,为了不再增加题目代码量,所以不对空间进行限制,可以使用n*2^m 的空间。

背包初始状态bag[0][0]=0,其余为-1,表明该状态目前不可达,也就是说,该状态暂时没有后继。

 #include<bits/stdc++.h>
using namespace std;
int t,n,m,bag[][],q,s;//第二维大于1024即可
int main(){
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
memset(bag,-,sizeof bag);
bag[][]=;
int goal=<<m;
for(int i=;i<=n;i++){
scanf("%d%d",&q,&s);
int w=;
for(int j=;j<s;j++){
int c;
scanf("%d",&c);
w|=<<(c-);//因为序号是从1开始的
}
for(int j=;j<goal;j++){
if(bag[i-][j]==-) continue;
bag[i][j^w]=max(bag[i][j^w],bag[i-][j]+q);
bag[i][j]=max(bag[i][j],bag[i-][j]);
}
}
printf("%d",bag[n][goal-]);
}
return ;
}

最新文章

  1. nginx服务器状态监控
  2. c#使用DocX给word添加目录TOC
  3. MFC TCHAR 和CHAR相互转换
  4. if语句,函数function
  5. php使用curl提交xml数据
  6. CMFCShellList和自定义ShellList结合使用,达到“直接浏览缩略图,双击打开图片”
  7. Sublime 3 如何使用列编辑模式
  8. web离线应用--dom storage
  9. 删除文件夹下各级子目录中的.svn文件
  10. POJ - 1753 Flip Game(状压枚举)
  11. Linux下DIR,dirent,stat等结构体详解(转)
  12. Perl中的正则表达式(五)
  13. Codeforces Round #534 (Div. 2)
  14. 使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点
  15. UI自动化测试框架之Selenium关键字驱动
  16. bzoj 2258 splay
  17. 笔记-python-centos环境下安装配置
  18. android——array中设置选项
  19. Vue.js 和 MVVM
  20. webfrom ASP开发基础跟模式

热门文章

  1. javascript-DOM操作-留言板制作
  2. 解决:git warning: LF will be replaced by CRLF in xxxx
  3. 不一样的控制面板 GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
  4. this license has been cancelled
  5. mobiscroll时间控件
  6. Count On A Tree II.
  7. Python Indentation
  8. 微信小程序编写物流信息进度样式
  9. 【转】浅谈Java中的equals和==
  10. JvisualVm添加远程监控