#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
#define Maxn 100
using namespace std;
int dp[<<],num[Maxn],bag[Maxn][Maxn],g,b,s,now[];
bool vi[Maxn];
int dfs(int S,int now[])
{
if(vi[S]) return dp[S];
if(S==) return ;
int a[],c[];
int i,j,f;
int ans=-;
int num=;
vi[S]=;
memcpy(c,now,sizeof(c));
for(i=;i<b;i++){
if((<<i)&S){
for(j=;j<=g;j++){
c[j]+=bag[i+][j];
}
}
}
for(j=;j<=g;j++)
num+=c[j]/s;
for(i=;i<b;i++){
if((<<i)&S){
f=;
memcpy(a,now,sizeof(a));
for(j=;j<=g;j++){
a[j]+=bag[i+][j];
f+=a[j]/s;
a[j]%=s;
}
if(f)
ans=max(ans,f+dfs(S^(<<i),a));
else
ans=max(ans,num-dfs(S^(<<i),a));
}
}
return dp[S]=ans;
}
void solve()
{
int i,j,N;
N=(<<b)-;
dp[]=;
dfs(N,now);
int sum=,cnt[];
memset(cnt,,sizeof(cnt));
for(i=;i<=b;i++){
for(j=;j<=g;j++){
cnt[j]+=bag[i][j];
}
}
for(i=;i<=g;i++)
sum+=cnt[i]/s;
printf("%d\n",*dp[N]-sum);
}
int main()
{
int i,j;
while(scanf("%d%d%d",&g,&b,&s)!=EOF,g||b||s){
memset(bag,,sizeof(bag));
memset(num,,sizeof(num));
memset(dp,-,sizeof(dp));
memset(vi,,sizeof(vi));
memset(now,,sizeof(now));
int x;
for(i=;i<=b;i++){
scanf("%d",&num[i]);
for(j=;j<=num[i];j++){
scanf("%d",&x);
bag[i][x]++;
}
}
solve();
}
return ;
}

思路:记忆化搜索。

dp[S]表示剩下状态为S时,先手最多能得多少魔法石。

2013 ACMICPC 杭州现场赛 I题的更多相关文章

  1. 2013杭州现场赛B题-Rabbit Kingdom

    杭州现场赛的题.BFS+DFS #include <iostream> #include<cstdio> #include<cstring> #define inf ...

  2. 2018 ACM-ICPC青岛现场赛 B题 Kawa Exam 题解 ZOJ 4059

    题意:BaoBao正在进行在线考试(都是选择题),每个题都有唯一的一个正确答案,但是考试系统有m个bug(就是有m个限制),每个bug表示为第u个问题和第v个问题你必须选择相同的选项,题目问你,如果你 ...

  3. HDU 4813 Hard Code(水题,2013年长春现场赛A题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4813 签到题. 把一个字符串按照格式输出就可以了,很水 #include <stdio.h> ...

  4. hdu 4771 Stealing Harry Potter's Precious (2013亚洲区杭州现场赛)(搜索 bfs + dfs) 带权值的路径

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4771 题目意思:'@'  表示的是起点,'#' 表示的是障碍物不能通过,'.'  表示的是路能通过的: ...

  5. Gym101981D - 2018ACM-ICPC南京现场赛D题 Country Meow

    2018ACM-ICPC南京现场赛D题-Country Meow Problem D. Country Meow Input file: standard input Output file: sta ...

  6. HDU 4816 Bathysphere (2013长春现场赛D题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4816 2013长春区域赛的D题. 很简单的几何题,就是给了一条折线. 然后一个矩形窗去截取一部分,求最 ...

  7. HDU 4738 Caocao's Bridges (2013杭州网络赛1001题,连通图,求桥)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. HDU 4800/zoj 3735 Josephina and RPG 2013 长沙现场赛J题

    第一年参加现场赛,比赛的时候就A了这一道,基本全场都A的签到题竟然A不出来,结果题目重现的时候1A,好受打击 ORZ..... 题目链接:http://acm.hdu.edu.cn/showprobl ...

  9. HDU 4747 Mex (2013杭州网络赛1010题,线段树)

    Mex Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submis ...

随机推荐

  1. 折腾Vscode写C++

    一直以来都是用Sublime Text3写C/C++.因为ST配置简单,轻量.闲来没事才弄一弄. 1. 新建文件夹C++Code,并且再建立一个bulid文件夹来放要写的代码. ​ 2. 在Vscod ...

  2. SHGetSpecialFolderLocation获取开始文件夹

    SHGetSpecialFolderLocation函数可以获取windows 特殊目录 函数原型:(MSDN官方链接:https://msdn.microsoft.com/en-us/library ...

  3. ZJOI2019Round#2

    乱听课记录 关于树的分治问题&杂题选讲 张哲宇 边分治 (边分不是很鸡肋吗) 例题一 题目大意:给出两颗有正负边权的树,求出两个点\(u,v​\)使得两棵树中\((u,v)​\)距离的和最大. ...

  4. Mysql查看锁等信息SQL语句

    查看锁等信息,包括锁信息: select "HOLD:",ph.id h_processid,trh.trx_id h_trx_id,trh.trx_started h_start ...

  5. ARM S3C2440 时钟初始化流程

    1.设置lock time 2.设置分频系数 3.设置CPU到异步工作模式 4.设置 FCLK 了解 芯片的时钟原理图,以及寄存器的作用 了解芯片的晶振频率,锁相环,分频系数,以及有哪些时钟

  6. Android内购订单验证 --- nodejs实现

    主代码: function AndroidPlayVerify(inappPurchaseData, inappDataSignature) { let verify = crypto.createV ...

  7. <Docker学习>2.Centos7安装docker

    Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10. CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无 ...

  8. POJ:1064-Cable master

    Cable master Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 58613 Accepted: 12231 Descri ...

  9. python基础之数据类型与变量patr2

    一.元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中. 即: ...

  10. P1021 邮票面值设计

    P1021 邮票面值设计 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX ...