思路:总共有18条边,9个三角形。

极大极小化搜索+剪枝比较慢,所以用记忆化搜索!!

用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解。

代码如下:

 #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define inf 1<<25
using namespace std;
int edge[][]={{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,}
,{,},{,},{,}};
int tri[][]={{,,},{,,},{,,},{,,},{,,},{,,},{,,},{,,},{,,}};
int p[],dp[<<];
int cal(int state,int e)
{
int ans=;
for(int i=;i<;i++){
bool flag=;
for(int j=;j<;j++) //判断边e是否在这个三角形中
if(e==tri[i][j]) flag=true;
if(flag){ //e在这个三角形中
for(int j=;j<;j++){
if(!(p[tri[i][j]]&state||e==tri[i][j])){ //如果满足条件说明tri[i][j]这条边不存在且e也不是这条边
ans--;break; //也就是不能构成三角形,否则能构成
}
}
ans++;
}
}
return ans;
}
int dfs(int state)
{
if(dp[state]!=-inf) return dp[state];
int ans=-inf;
for(int i=;i<;i++){
if(!(state&p[i])){
int tt=cal(state,i);
if(tt) tt+=dfs(state|p[i]);
else tt-=dfs(state|p[i]);
ans=max(ans,tt);
}
}
return dp[state]=ans;
}
int main()
{
//freopen("1.txt","r",stdin);
int t,u,v,ca=,m;
p[]=;
for(int i=;i<;i++) p[i]=p[i-]*;
for(int i=;i<(<<);i++) dp[i]=-inf;
dp[(<<)-]=;
scanf("%d",&t);
while(t--){
scanf("%d",&m);
int m0=,m1=,tt=,state=,side=;
while(m--){
scanf("%d%d",&u,&v);
for(int i=;i<;i++)
if(edge[i][]==u&&edge[i][]==v){
tt=cal(state,i);
state|=p[i];
side==?m0+=tt:m1+=tt;
side++;
if(tt) side++;
side%=;
break;
}
}
int ans=m0-m1;
if(side==) ans+=dfs(state);
else ans-=dfs(state);
printf("Game %d: %s\n",++ca,ans>?"A wins.":"B wins.");
}
return ;
}

poj 1085 Triangle War 博弈论+记忆化搜索的更多相关文章

  1. poj 1085 Triangle War (状压+记忆化搜索)

    Triangle War Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2685   Accepted: 1061 Desc ...

  2. poj 3249(bfs+dp或者记忆化搜索)

    题目链接:http://poj.org/problem?id=3249 思路:dp[i]表示到点i的最大收益,初始化为-inf,然后从入度为0点开始bfs就可以了,一开始一直TLE,然后优化了好久才4 ...

  3. poj 1661 Help Jimmy(记忆化搜索)

    题目链接:http://poj.org/problem?id=1661 一道还可以的记忆化搜索题,主要是要想到如何设dp,记忆化搜索是避免递归过程中的重复求值,所以要得到dp必须知道如何递归 由于这是 ...

  4. poj1163The Triangle(动态规划,记忆化搜索)

    7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number triangle. Write a program that calc ...

  5. hdu 4753 Fishhead’s Little Game 博弈论+记忆化搜索

    思路:状态最多有2^12,采用记忆化搜索!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm& ...

  6. poj 1088 动态规划+dfs(记忆化搜索)

    滑雪 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u   Description Mi ...

  7. poj 1579(动态规划初探之记忆化搜索)

    Function Run Fun Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17843   Accepted: 9112 ...

  8. POJ 3616 Milking Time ——(记忆化搜索)

    第一眼看是线段交集问题,感觉不会= =.然后发现n是1000,那好像可以n^2建图再做.一想到这里,突然醒悟,直接记忆化搜索就好了啊..太蠢了.. 代码如下: #include <stdio.h ...

  9. POJ 1661 Help Jimmy ——(记忆化搜索)

    典型的记忆化搜索问题,dfs一遍即可.但是不知道WA在哪里了= =,一直都没找出错误.因为思路是很简单的,肯定是哪里写挫了,因此不再继续追究了. WA的代码如下,希望日后有一天能找出错误= =: —— ...

随机推荐

  1. hdu 2091 空心三角形

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2091 空心三角形 Description 把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为 ...

  2. Android 解决图片大量下载:软引用必须懂4点

    1.对象的强.软.弱和虚引用为了能更加灵活控制对象的生命周期,需要知道对象引用的4中级别,由高到低依次为 :强引用.软引用.弱引用和虚引用 备注: 这四种的区别: ⑴强引用(StrongReferen ...

  3. CoverFlow效果

    1. 成员函数 mCamera是用来做类3D效果处理,比如z轴方向上的平移,绕y轴的旋转等 mMaxRotationAngle是图片绕y轴最大旋转角度,也就是屏幕最边上那两张图片的旋转角度 mMaxZ ...

  4. sql语句查询经纬度范围

    指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据. 经度:113.914619 纬度:22.50128 范围:2km longitude为数据表经度字段 latitude ...

  5. Linux如何开机自动运行自己的脚本

    博客分类: LINUX 脚本LinuxCentOSWindowsBash      记录这个事情是上次完成之后,今天要新加一个文件夹,一时之间忘记以前怎么做了,因为有几种方法,起码我知道三种方法,这里 ...

  6. iOS另类的内存管理

    iOS的内存管理算是老生常谈的问题了,我们写iOS的时候无时无刻不在涉及到内存管理.从开始的MRR(manual retain-release)到后来ARC(Automatic Reference C ...

  7. 60.ISE PhysDesignRules ERROR

    PhysDesignRules:2100 - Issue with pin connections and/or configuration on block:<U_ila_pro_0/U0/I ...

  8. [Android Training视频系列] 8.3 Dealing with Audio Output Hardware

    用户在播放音乐的时候有多个选择,可以使用内置的扬声器,有线耳机或者是支持A2DP的蓝牙耳机.(补充:A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模 ...

  9. WPF——数据绑定(一)什么是数据绑定

    注意:本人初学WPF,文中可能有表达或者技术性问题,欢迎指正!谢谢! 一:什么是数据绑定? “Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简 ...

  10. UITableView 应用及其总结

    Plain: Grouped: Cell的结构图: UITableViewCellStyleDefault:预设使用这种,若左侧ImageView没图的话,只有一行字(textLable.text). ...