频道栏目
首页 > 考试 > 其他 > 正文
poj 3317 Stake Your Claim(极大极小搜索经典 a-b+剪枝+记忆化dp)
2017-09-12 10:36:25      个评论    来源:滔滔  
收藏   我要投稿

poj 3317 Stake Your Claim(极大极小搜索经典 a-b+剪枝+记忆化dp)。

分析

哇这题也算把我卡得够死了,怪我没能正确理解所谓a-b剪枝的姿势.
其实alpha-beta剪枝不用也是可以过的,非得我不用才找到了错误

首先这道题只有10种选择,每种选择有3种状态,共310<60000,因此直接记忆话搜就行了.用3进制状压一下.然后就是枚举空点的时候也可以状压一下这样枚举快.

AC code

//Source Code

//Problem: 3317     User: zouzhitao
//Memory: 852K      Time: 94MS
//Language: G++     Result: Accepted
Source Code
#include 
#include 
#include 
#include 
#define pb push_back
#define mp make_pair
#define PI acos(-1)
#define fi first
#define se second
#define INF 0x3f3f3f3f
#define INF64 0x3f3f3f3f3f3f3f3f
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define ms(x,v) memset((x),(v),sizeof(x))
#define scint(x) scanf("%d",&x );
#define scf(x) scanf("%lf",&x );
#define eps 1e-10
#define dcmp(x) (fabs(x) < eps? 0:((x) <0?-1:1))
#define SQ(x) (x)*(x)
using namespace std;
typedef long long LL;
typedef long double DB;
typedef pair Pair;
const int maxn = 11;
int n;
int a[maxn][maxn];
std::vector empty;
 char s[maxn];
int vis[maxn][maxn];
int dx[] = {-1,1,0,0};
int dy[] = {0,0,1,-1};

bool bound(int x,int y){
    return (x)>=0 && (x)=0 && (y) alpha)alpha = val;
            if(state ==(1< empty[i])){
                    ans = alpha;
                    first = empty[i];
                //  std::cout << first.fi <<" " << first.se << '\n';
                }
            }
            if(alpha >=beta){
                return alpha;
            }
            st^=(1<=beta){
                return beta;
            }
            st^=(1< n2){
            for(int i=0 ; i
点击复制链接 与好友分享!回本站首页
上一篇:线段树与动态规划(例题:poj2374)
下一篇:POJ 3070 Fibonacci 矩阵快速幂
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训

版权所有: 红黑联盟--致力于做实用的IT技术学习网站