#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. python__高级 : @修饰器(装饰器)的理解

    以下是第一次了解的时候写的东西,有的地方理解不正确,虽已改正但是太片面,请直接看下面第二次修改加上的内容. ---------------------------------------------- ...

  2. 430. Flatten a Multilevel Doubly Linked List

    /* // Definition for a Node. class Node { public: int val = NULL; Node* prev = NULL; Node* next = NU ...

  3. [WC2002][洛谷P1578]奶牛浴场

    洛谷题解里那个人可真是话多呢. 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每 ...

  4. 【Kernel Logistic Regression】林轩田机器学习技术

    最近求职真慌,一方面要看机器学习,一方面还刷代码.还是静下心继续看看课程,因为觉得实在讲的太好了.能求啥样搬砖工作就随缘吧. 这节课的核心就在如何把kernel trick到logistic regr ...

  5. QA 、 QC & QM软件测试入门专业名词解释 -- 灌水走起

    灌水正式开始: 说明:我的农田,我灌水 一.QA . QC & QM: 1.QM QM 是quanlity management,中文名称是品质管理 2.QA QA是英文quality ass ...

  6. python3知识点之---------字符串的介绍

    1. 定义 其实字符串就是一系列字符,用引号括起来的就是字符串,其中的引号可以是单引号或者双引号. 比如 "This is a string"   'This is a strin ...

  7. Python 自学 Day1

    作业二:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 #!/usr/bin/env python import getpass def log(): uname = input ...

  8. Set(), Get() 真正的目的

    在各种面向对象编程中,都有 Set(), Get() 两种方法. 1 常见理解 1 为了保证安全性 2 为了规范代码 其实这些理解都是对的.具体看我们从哪个角度去理解这个内容. 2 个人理解 2.1 ...

  9. SPOJ 149 FSHEEP Fencing in the Sheep ( 计算几何 + 二分 )

    以下摘自SPOJ泛做表格: 题意:给定一个星形多边形,而且给出了一个可以看到形内所有点的位置(我们称这个点为观察点),让你判断有多少个点位于多边形内. 时间复杂度:O(mlogn) 将多边形上的点按极 ...

  10. UVa 1326 - Jurassic Remains(枚举子集+中途相遇法)

    训练指南p.59 #include <cstdio> #include <cstring> #include <cstdlib> #include <map& ...