思路:状态最多有2^12,采用记忆化搜索!!

代码如下:

 #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define inf 1<<30
using namespace std;
int edge[][]={{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},
{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},
{,},{,}};
int tri[][]={{,,,},{,,,},{,,,},{,,,},{,,,},
{,,,},{,,,},{,,,},{,,,}};
int p[],index[],cnt;
int dp[<<];
int cal(int state,int e)
{
int ans=,t=;
for(int i=;i<;i++){
bool flag=;
for(int j=;j<;j++)
if(e==tri[i][j]){
flag=true;
break;
}
if(flag){
t++;
for(int j=;j<;j++){
if(!(p[tri[i][j]]&state||e==tri[i][j])){
ans--;break;
}
}
ans++;
}
if(t==) break;
}
return ans;
}
int dfs(int state,int now)
{
if(dp[now]!=-inf) return dp[now];
int ans=-inf;
for(int i=;i<cnt;i++){
if(!(now&p[i])){
int tt=cal(state,index[i]);
tt-=dfs(state|p[index[i]],now|p[i]);
ans=max(ans,tt);
}
}
return dp[now]=ans;
}
int main()
{
int t,u,v,ca=,m;
bool vis[];
p[]=;
for(int i=;i<=;i++) p[i]=p[i-]*;
scanf("%d",&t);
while(t--){
scanf("%d",&m);
int m0=,m1=,tt=,state=,side=;
memset(vis,,sizeof(vis));
while(m--){
scanf("%d%d",&u,&v);
if(u>v) swap(u,v);
for(int i=;i<;i++)
if(edge[i][]==u&&edge[i][]==v){
tt=cal(state,i);
vis[i]=;
state|=p[i];
side==?m0+=tt:m1+=tt;
side++;
side%=;
break;
}
}
cnt=;
for(int i=;i<;i++){
if(!vis[i]){
index[cnt++]=i;
}
}
for(int i=;i<(<<cnt);i++) dp[i]=-inf;
dp[(<<cnt)-]=;
int ans=m0-m1;
if(side==) ans+=dfs(state,);
else ans-=dfs(state,);
printf("Case #%d: %s\n",++ca,ans>?"Tom200":"Jerry404");
}
return ;
}

hdu 4753 Fishhead’s Little Game 博弈论+记忆化搜索的更多相关文章

  1. hdu 4753 2013南京赛区网络赛 记忆化搜索 ****

    看到范围基本可以想到dp了,处理起来有点麻烦 #include<iostream> #include<cstdio> #include<cstring> #incl ...

  2. HDU 1142 A Walk Through the Forest (记忆化搜索 最短路)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  3. HDU 4444 Walk (离散化建图+BFS+记忆化搜索) 绝对经典

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给你一些n个矩形,给你一个起点,一个终点,要你求从起点到终点最少需要转多少个弯 题解:因为 ...

  4. hdu 1078 FatMouse and Cheese(简单记忆化搜索)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1078 题意:给出n*n的格子,每个各自里面有些食物,问一只老鼠每次走最多k步所能吃到的最多的食物 一道 ...

  5. poj 1085 Triangle War 博弈论+记忆化搜索

    思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: #include<ios ...

  6. hdu 1078 FatMouse and Cheese (dfs+记忆化搜索)

    pid=1078">FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/ ...

  7. HDU 4597 Play Game (DP,记忆化搜索)

    Play Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total S ...

  8. HDU 2089 不要62(数位DP&#183;记忆化搜索)

    题意  中文 最基础的数位DP  这题好像也能够直接暴力来做   令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件 那么非常easy有状态转移方程 dp[i][j] = sum{ dp[ ...

  9. HDU 1248寒冰王座-全然背包或记忆化搜索

    寒冰王座 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

随机推荐

  1. bootstrap插件之Carousel

    兼容:ie9以上 特点:滑动图片看起来永远只有两帧,过度完美:是html css js的完美配合:其中html的data属性起了关键性作用 前提:normalize.css  jquery.js ht ...

  2. golang的{}初始化

    之前说到Golang中某些类型可以赋值nil, 某些类型不能赋值nil. 不能赋值nil都是initialized value不为nil的类型, 例如: bool int, intN uint, ui ...

  3. 史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置

    在上一篇 PHP 系列的文章<PHP 集成开发环境比较>中,我根据自己的亲身体验,非常简略的介绍和对比了几款常用的集成开发环境,就我个人而言,比较推崇 Zend Studio 和 PhpS ...

  4. SCSF智能客户端学习笔记(一)

    什么是智能客户端 要了解智能客户端,首先要认识瘦客户端技术和胖客户端技术各自的优缺点. 对于前者,典型的应用就是使用浏览器,通过输入URL远程访问服务端,并向服务端发送命令,获取服务端的资源,然后在客 ...

  5. C# SQL增删查改

    DBHelper: /// <summary> /// 执行查询 /// </summary> /// <param name="sql">有效 ...

  6. Pintos修改优先级捐赠、嵌套捐赠、锁的获得与释放、信号量及PV操作

    Pintos修改优先级捐赠.嵌套捐赠.锁的获得与释放.信号量及PV操作 原有的优先级更改的情况下面没有考虑到捐赠的情况,仅仅只是改变更改了当前线程的优先级,更别说恢复原本优先级了,所以不能通过任何有关 ...

  7. vs2013中使用nuget下载cefsharp winform包

    cefsharp是chrome的一个开源项目,基于webkit的一个浏览器.下载cefsharp需要安装nuget.之后管理nuget程序包,联机搜索cef即可找到winform包.

  8. Week8 软件规格说明书

    1.概述 本项目组所开发的软件为一个基于Android的手机端的时间管理软件,主要功能为时间管理软件,可以用于管理待办事项,记录一些需要提醒的信息等.有事件提醒.与Google账户同步.课程表等功能. ...

  9. css3之圆角效果 border-radius

    圆角效果 border-radius  border-radius是向元素添加圆角边框. 使用方法: border-radius:10px; /* 所有角都使用半径为10px的圆角 */ border ...

  10. 【Sort Colors】cpp

    题目: Given an array with n objects colored red, white or blue, sort them so that objects of the same ...