题目链接

当我放弃的时候过了。sb啊,卡常数!!!

换了好几个姿势,本来没写预处理,预处理+俩剪枝,尼玛就过了。。

 #include <stdio.h>
#include <string.h>
#include <iostream>
#include <queue>
using namespace std;
#define INF 0x3f3f3f3f
#define LL __int64
int bag[][];
int sum[];
int dp[<<];
int bg[<<][];
int g,b,s;
int temp[];
int dfs(int x)
{
int maxz = ,i,j,flag,st;
if(dp[x] != -)
return dp[x];
for(i = ;i < b;i ++)
{
if((x&(<<i)) == )
{
flag = ;
st = ;
for(j = ;j < g;j ++)
{
flag += bg[x|(<<i)][j]/s - bg[x][j]/s;
st += sum[j]/s - bg[x|(<<i)][j]/s;
}
if(flag)
{
if(maxz >= st + flag) continue;//剪枝就是这两个剪枝
if(maxz < dfs(x|(<<i))+flag)
maxz = dfs(x|(<<i))+flag;
}
else
{
if(maxz >= st) continue;//剪枝
if(maxz < st - dfs(x|(<<i)))
maxz = st - dfs(x|(<<i));
}
}
}
return dp[x] = maxz;
}
int main()
{
int i,j,k,n,num,sp,sa,sb;
while(scanf("%d%d%d",&g,&b,&s)!=EOF)
{
if(g == &&b == &&s == )
break;
for(i = ;i < (<<b);i ++)
{
dp[i] = -;
for(j = ;j < g;j ++)
bg[i][j] = ;
}
for(i = ;i < b;i ++)
{
for(j = ;j < g;j ++)
{
bag[i][j] = ;
}
}
for(j = ;j < g;j ++)
{
sum[j] = temp[j] = ;
}
for(i = ;i < b;i ++)
{
scanf("%d",&n);
for(j = ;j <= n;j ++)
{
scanf("%d",&num);
bag[i][num-]++;
sum[num-] ++;
}
}
for(i = ;i < (<<b);i ++)//扯淡的预处理
{
for(j = ;j < b;j ++)
{
if(i&(<<j))
{
for(k = ;k < g;k ++)
bg[i][k] += bag[j][k];
}
}
}
sp = ;
for(i = ;i < g;i ++)
{
sp += sum[i]/s;
}
sa = dfs();
sb = sp - sa;
printf("%d\n",sa-sb);
}
return ;
}

HDU 4778 Gems Fight!(DP)的更多相关文章

  1. hdu 4778 Gems Fight! 博弈+状态dp+搜索

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4102743.html 题目链接:hdu 4778 Gems Fight! 博弈+状态dp+搜 ...

  2. Hdu 4778 Gems Fight! (状态压缩 + DP)

    题目链接: Hdu 4778 Gems Fight! 题目描述: 就是有G种颜色,B个背包,每个背包有n个宝石,颜色分别为c1,c2............两个人轮流取背包放到公共容器里面,容器里面有 ...

  3. hdu 4778 Gems Fight! 状压dp

    转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...

  4. hdu 4778 Gems Fight! 状态压缩DP

    Gems Fight! Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 327680/327680 K (Java/Others)T ...

  5. HDU 4778 Gems Fight! (2013杭州赛区1009题,状态压缩,博弈)

    Gems Fight! Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 327680/327680 K (Java/Others)T ...

  6. hdu 4778 Gems Fight!

    第一次写状压dp-- 题意:http://blog.csdn.net/dyx404514/article/details/15506601 状压dp+博弈吧-- #include<iostrea ...

  7. HDU 4778 状压DP

    一看就是状压,由于是类似博弈的游戏.游戏里的两人都是绝对聪明,那么先手的选择是能够确定最终局面的. 实际上是枚举最终局面情况,0代表是被Bob拿走的,1为Alice拿走的,当时Alice拿走且满足变换 ...

  8. hdu 6169 gems gems gems【DP】

    题目链接:hdu 6169 gems gems gems Now there are n gems, each of which has its own value. Alice and Bob pl ...

  9. hdu 4778 Rabbit Kingdom(减少国家)

    题目链接:hdu 4778 Rabbit Kingdom 题目大意:Alice和Bob玩游戏,有一个炉子.能够将S个同样颜色的宝石换成一个魔法石.如今有B个包,每一个包里有若干个宝石,给出宝石的颜色. ...

随机推荐

  1. 获取当前IP地址,跳转到对应城市网站。

    index.php文件 1,通过获取当前IP地址, 2,调用新浪AIP,获取到当前城市. 3,将中文转换为拼音后跳转. <?php include './pinyin.php'; //获取当前i ...

  2. W:Failed to fetch http://archive.ubuntukylin.com:10006/ubuntukylin/dists/pre

    由于用ubuntu的时候装了几个ubuntukylin的软件(像搜狗拼音for linux),于是最近总是蹦出一个红色的三角提示,说无法更新,虽说不影响使用但是还是很不爽.解决方法记录如下: 进入系统 ...

  3. hdu 4045 2011北京赛区网络赛F 组合数+斯特林数 ***

    插板法基础知识 斯特林数见百科 #include<iostream> #include<cmath> #include<cstdio> #include<cs ...

  4. Sizeof运算符小结

    以下内容援引自<C Primer Plus>中文版第五版Page95 Sizeof运算符以字节为单位返回其操作数的大小.(在C中,1个字节被定义为char类型所占用空间的大小.在过去,1个 ...

  5. SSH Key连接github提示Permission denied (publickey).错误

    root@debian64:/home/xiaoliuzi/.ssh/key_backup# ssh -T git@github.com The authenticity of host 'githu ...

  6. 利用opencv进行相机标定程序

    #include "Stafx.h" ; //棋盘上有13个格子,那么角点的数目12 ; ; //图片的总张数 int main(int argc, char** argv) { ...

  7. EL表达式详解及应用实例

    1. EL是JSP内置的表达式语言! * jsp2.0开始,不让再使用java脚本,而是使用el表达式和动态标签来替代java脚本! * EL替代的是<%= ... %>,也就是说,EL只 ...

  8. Liferay 6.2 改造系列之五:修改默认站点的页面内容

    相关页面可以通过/portal-master/portal-impl/src/portal.properties文件配置进行修改: 登录页: ## ## Default Landing Page ## ...

  9. Laravel错误与日志处理

    App\Exceptions\Handler class is where all exceptions triggered by your application are logged and th ...

  10. SpringRMI解析1-使用示例

    Java远程方法调用,即JavaRMI(JavaRemote Method Invocation),是Java编程语言里一种用于实现远程过程调用的应用程序编程接口.它使客户机上的运行的程序可以调用远程 ...