思路:状态最多有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. Android WIFI 启动流程

    参考:http://blog.chinaunix.net/uid-26215986-id-3260413.html 一. WIFI 工作步骤 1. Wifi模块初始化 2. Wifi启动 3. 查找热 ...

  2. hdu 3172 Virtual Friends

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3172 并查集的运用... #include<algorithm> #include< ...

  3. mac 系统开发android,真机调试解决方案

    1.确保你的android设备真正链接到电脑上了,我在这里遇到过坑,弄了好久,才发现能充电的线,确无法传递数据过去.所以不要以为随便拿一根线,能充电,就可以传递数据了,我就是这么傻傻的拿了根不能用的数 ...

  4. KafkaOffsetMonitor使用方法

    (1)下载jar包 去网上搜索KafkaOffsetMonitor即可. 我这里共享了我的百度云连接:http://yun.baidu.com/s/1nvGjbDn 如果某一天我这个取消共享了,大家去 ...

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

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

  6. with check option

    通过有with check option选项的视图操作基表(只是面对单表,对连接多表的视图正在寻找答案),有以下结论:首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过 ...

  7. django概述

    一.django的特点 1.提供一体化的web解决方案,什么叫一体化:mvc 2.等你玩儿牛逼了可以拔插组件,换成自己顺手或者更牛逼的组件

  8. Qt 按键长按的处理

    keyPressEvent()部分代码: if (e->key() == Qt::Key_A && e->isAutoRepeat()) {   if (!mPressFl ...

  9. 28335 AD 转换

    #include "DSP2833x_Device.h"#include "DSP2833x_Examples.h" void Ad_init(void){ I ...

  10. P1297: [SCOI2009]迷路

    首先知道,如果没有路径长度的要求,且给定的邻接矩阵只有0和1表示通与不通的话,从S->E走N次的方案数就是这个矩阵自乘N次后的(S,E)的数值.这样的话只需要快速幂+矩阵乘法即可过关. (转载请 ...