#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <string.h>
using namespace std;
bool use[<<];
int dp[<<];
int G,B,S;
int P[][];
int nu[];
int work3()
{
int ans=;
for(int i=; i<=G; i++)
{
int ge=;
for(int j=;j <B; j++)
ge+=P[j][i];
ans+=ge/S;
}
return ans;
}
int jia(int j)
{
int ans=;
for(int i=; i<=G; i++)
{
nu[i]+=P[j][i];
ans+=nu[i]/S;
nu[i]%=S;
}
return ans;
}
void jian(int j)
{
for(int i=; i<=G; i++)
{
nu[i]=((nu[i]-P[j][i])%S+S)%S;
}
}
void dfs(int D,int cntge)
{
if(use[D])return ;
use[D]=true;
dp[D]=;
for(int j=;j<B; j++)
{
if((D&(<<j))==)continue;
int num=jia(j);
dfs(D^(<<j),cntge-num);
if(num>)
dp[D]=max(dp[D^(<<j)]+num,dp[D]);
else{
dp[D]=max(cntge-dp[D^(<<j)],dp[D]);
}
jian(j);
}
}
int main()
{ while(scanf("%d%d%d",&G,&B,&S)&&G+B+S!=)
{
if(B==){
printf("0\n");continue;
}
for(int i=; i<B; i++)
{
int d;
scanf("%d",&d);
memset(P[i],,sizeof(P[i]));
for(int j=;j<d; j++){
int k;scanf("%d",&k);
P[i][k]++;
}
}
int K=<<B;
memset(use,false,sizeof(use));
use[]=true;
int ge1=work3();
dfs(K-,ge1);
int ge=dp[K-];
printf("%d\n",ge*-ge1);
} return ;
}

hdu4778 状态压缩的更多相关文章

  1. hdu4778(状态压缩dp)

    题意: 有G种颜色的宝石,共B袋.两个人轮流拿宝石,每次从B袋中拿一袋,把其中的所有宝石倒入一个公共容器,每袋宝石只能取一次. 当容器中有S个相同颜色的宝石时,将失去这S个宝石,当前操作者得到一个魔法 ...

  2. POJ 3254. Corn Fields 状态压缩DP (入门级)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9806   Accepted: 5185 Descr ...

  3. HDU 3605:Escape(最大流+状态压缩)

    http://acm.hdu.edu.cn/showproblem.php?pid=3605 题意:有n个人要去到m个星球上,这n个人每个人对m个星球有一个选择,即愿不愿意去,"Y" ...

  4. [HDU 4336] Card Collector (状态压缩概率dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题目大意:有n种卡片,需要吃零食收集,打开零食,出现第i种卡片的概率是p[i],也有可能不出现卡 ...

  5. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  6. codeforces B - Preparing Olympiad(dfs或者状态压缩枚举)

    B. Preparing Olympiad You have n problems. You have estimated the difficulty of the i-th one as inte ...

  7. NOIP2005过河[DP 状态压缩]

    题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...

  8. vijos1426兴奋剂检查(多维费用的背包问题+状态压缩+hash)

    背景 北京奥运会开幕了,这是中国人的骄傲和自豪,中国健儿在运动场上已经创造了一个又一个辉煌,super pig也不例外……………… 描述 虽然兴奋剂是奥运会及其他重要比赛的禁药,是禁止服用的.但是运动 ...

  9. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

随机推荐

  1. 《HTTP - http首部信息》

    推荐一首歌 - 僕が死のうと思ったのは (曾经我也想过一了百了) 也就听了几十遍而已 经历一番波折,终于正式到了北京. 刚开始是很艰难的,多走两步就好了,不是么. 1:首部字段 Cache-Contr ...

  2. awk数组

    对于awk '!a[$3]++',需要了解3个知识点 1.awk数组知识,不说了2.awk的基本命令格式 awk 'pattern{action}' 省略action时,默认action是{print ...

  3. shell 变量的数值计算实践 expr

    expr(evaluate(求值)expressions(表达式))命令既可以用于整数运算,也可以用于相关字符串长度.匹配等的运算处理 expr 用做计算 必须有一个空格才会计算 [root@salt ...

  4. OC仿QQ侧滑

    之前做侧滑用的控件的DDMenu,总感觉好像差了点什么,自己尝试写了一个,三层叠加,感觉效果不理想,偶然间看到了一篇博客,与大家分享,再次申明,该代码不是我写的,只是为了给自己留一个查找资料的机会 下 ...

  5. 升级my.cnf注意

    升级my.cnf注意 mkdir -p /ngbs/data/{logs,tmp} vi  /etc/init.d/mysqlbasedir=/usr/local/mysql datadir=/ngb ...

  6. 各版本系统安装tesseract-ocr

    Mac版本 1.tesseract-ocr安装  brew install tesseract-ocr 注意:如果未安装brew命令,可以输入命令: brew官网:http://brew.sh /us ...

  7. 使用python实现日志功能

    Python脚本日志系统   Python通过logging模块提供日志功能,关于logging模块的使用网络上已经有很多详细的资料,这里要分享的是怎样在实际工程中使用日志功能. 假设要开发一个自动化 ...

  8. 帝国cms-tab

    <ul class="intro_commenTab"> [e:loop={"select classname,classpath,classid from ...

  9. Cartographer源码阅读(1):程序入口

    带着几个思考问题: (1)IMU数据的使用,如何融合,Kalman滤波? (2)图优化的具体实现,闭环检测的策略? (3)3D激光的接入和闭环策略? 1. 安装Kdevelop工具: http://b ...

  10. Python开发【项目】:选课系统-改良版

    程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...