#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. 洛谷P3611 [USACO17JAN]Cow Dance Show奶牛舞蹈

    题目描述 After several months of rehearsal, the cows are just about ready to put on their annual dance p ...

  2. Ubuntu安装MySQL及使用Xshell连接MySQL出现的问题(2003-Can't connect to MySql server及1045错误)

    不管在什么地方,什么时候,学习是快速提升自己的能力的一种体现!!!!!!!!!!! 以下所有的命令都是在root用户下操作(如果还没有设置root密码)如下: 安装好Ubuntu系统之后,打开终端先设 ...

  3. Webpack + Vue 多页面项目升级 Webpack 4 以及打包优化

    0. 前言 早在 2016 年我就发布过一篇关于在多页面下使用 Webpack + Vue 的配置的文章,当时也是我在做自己一个个人项目时遇到的配置问题,想到别人也可能遇到跟我同样的问题,就把配置的思 ...

  4. 38.VUE学习之-全局组件和局部组件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  5. C语言字符篇(二)字符串处理函数

    字符串处理函数 1. 拷贝 strcpy 2. 追加 strcat   #include <string.h>   char *strcpy(char *dest, const char ...

  6. POJ-2251 三维迷宫

    题目大意:给一个三维图,可以前后左右上下6种走法,走一步1分钟,求最少时间(其实就是最短路) 分析:这里与二维迷宫是一样的,只是多了2个方向可走,BFS就行(注意到DFS的话复杂度为O(6^n)肯定会 ...

  7. 开放定址法——平方探测(Quadratic Probing)

    为了消除一次聚集,我们使用一种新的方法:平方探测法.顾名思义就是冲突函数F(i)是二次函数的探测方法.通常会选择f(i)=i2.和上次一样,把{89,18,49,58,69}插入到一个散列表中,这次用 ...

  8. ABAP CDS - SELECT, WHERE

    格式 ... WHERE cond_expr ... 结果 定义CDS视图结果集的Where条件.访问CDS视图时,结果集仅包含来自数据源数据源的数据,该数据源数据源满足在where之后指定的条件co ...

  9. python基础之多态与多态性、绑定方法和非绑定方法

    多态与多态性 多态 多态并不是一个新的知识 多态是指一类事物有多种形态,在类里就是指一个抽象类有多个子类,因而多态的概念依赖于继承 举个栗子:动物有多种形态,人.狗.猫.猪等,python的序列数据类 ...

  10. 在MAC下使用Robotframework+Selenium2【第二枪】如何处理Table点击指定记录

    1.通过关键字Get Matching Xpath Count获取table中的记录 2.遍历Table所有记录 3.判断记录是否符合条件,做点击操作