hihoCoder编程练习赛11 物品价值

描述
小Hi现在有n个物品,每个物品都有一个价值。并且这n个物品总共有m个不同的属性,每个物品都具有其中若干属性。
小Ho要从中选出若干物品,满足每个属性都正好有奇数个物品拥有,且被选出的物品价值总和最大。你能帮助小Ho完成任务么?
输入
第一行一个数T(<=10),表示数据组数。对于每一组数据:
第一行两个数n,m(1<=n<=1000,m<=10)
接下来每两行描述一件物品。对于每一件物品:
第一行两个数v和s,表示其价值和所含属性数量(v<=100000,s<=m)
第二行s个数,表示该物品拥有的属性编号(1<=编号<=m)
输出
物品价值总和的最大值。
样例输入
1
3 2
2 1
1
2 1
2
5 2
1 2
样例输出
5
分析
(http://www.cnblogs.com/aiterator/p/6623319.html)
明显是背包问题,但是怎样将“多个属性”转为“重量”?
对于每个物品的每个属性,不用管大小,只要考虑奇偶。可以用一个1<<10以内的数表示出这个物品的所有属性。两个物品的属性相加,可以做异或操作。
dp矩阵大小为:物品数*(1<<10)
代码
http://hihocoder.com/contest/offers11/solution/1011929

你可能感兴趣的:(hihoCoder编程练习赛11 物品价值)