好题,单纯的就是pn状态的推导

/*
把第一个点标为0,剩下的点按1-n-1编号
胜态是1,败态为0,dp[i][j]表示第i个人,怪兽起始位置在j时的胜负态
把0点设置为必败态,然后对于一个人来说,所有能到0点的点都设为必胜态,然后对于另一个人来说,如果他所有选择都会走到对手的必胜态上,那么这个状态就是必败
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 10000 vector<int>s[];
int n,a,t1,t2,dp[][maxn],chose[][maxn]; void dfs(int k,int i,int v){
if(dp[k][i]!=-) return;//如果已经有状态
dp[k][i]=v;
if(v==){
for(int it : s[k^]){//所有能到达i点的都是必胜态
int j=(i+n-it)%n;
if(j==) continue;
dfs(k^,j,); }
}
else {
for(int it : s[k^]){
int j=(i+n-it)%n;
if(j==) continue;
if(--chose[k^][j]==)//如果这个点能到达的点都是必胜态,那么这个点就是必败态
dfs(k^,j,);
}
}
} int main(){
scanf("%d",&n);
scanf("%d",&t1);
s[].clear();
for(int i=;i<t1;i++){
scanf("%d",&a);
s[].push_back(a);
} scanf("%d",&t2);
s[].clear();
for(int i=;i<t2;i++){
scanf("%d",&a);
s[].push_back(a);
} for(int i=;i<n;i++) chose[][i]=t1;
for(int i=;i<n;i++) chose[][i]=t2;
memset(dp,-,sizeof dp); dfs(,,);
dfs(,,); for(int i=;i<n;i++) {
if(dp[][i]==-) printf("Loop ");
else if(dp[][i]==) printf("Win ");
else printf("Lose ");
}
puts("");
for(int i=;i<n;i++){
if(dp[][i]==-) printf("Loop ");
else if(dp[][i]==) printf("Win ");
else printf("Lose ");
}
puts("");
}

cf787c 博弈论+记忆化搜索的更多相关文章

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

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

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

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

  3. bzoj3895: 取石子(博弈论,记忆化搜索)

    3895: 取石子 Time Limit: 1 Sec  Memory Limit: 512 MBSubmit: 361  Solved: 177[Submit][Status][Discuss] D ...

  4. Codeforces Round #459 (Div. 2):D. MADMAX(记忆化搜索+博弈论)

    D. MADMAX time limit per test1 second memory limit per test256 megabytes Problem Description As we a ...

  5. 徐州网络赛B-BE,GE or NE【记忆化搜索】【博弈论】

    In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl named &qu ...

  6. hdu 4111 Alice and Bob 记忆化搜索 博弈论

    Alice and Bob Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...

  7. Codeforces Round #459 (Div. 2):D. MADMAX(记忆化搜索+博弈论)

    题意 在一个有向无环图上,两个人分别从一个点出发,两人轮流从当前点沿着某条边移动,要求经过的边权不小于上一轮对方经过的边权(ASCII码),如果一方不能移动,则判负.两人都采取最优策略,求两人分别从每 ...

  8. [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索

    1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...

  9. 【BZOJ-3895】取石子 记忆化搜索 + 博弈

    3895: 取石子 Time Limit: 1 Sec  Memory Limit: 512 MBSubmit: 263  Solved: 127[Submit][Status][Discuss] D ...

随机推荐

  1. MySQL_异常

    问题1 描述:在连接MYSQL数据库时出现问题:“ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)” 分 ...

  2. Struts2中遇到的问题

    问题1: 最近在学习的时候用到了Struts2.5,在一系列操作之后Tomcat部署成功了,然而之后在测试的时候却出现了问题,网页无法正常响应,并且报出了Wrong method was define ...

  3. Linux记录-普通用户下执行sudo xxx 找不到命令解决方案

    chmod 777 /etc/sudoers vim /etc/sudoers 1.可以使用 secure_path 指令修改 sudoers 中默认的 PATH为你想要的路径.这个指令指定当用户执行 ...

  4. webapi框架搭建-webapi异常处理

    webapi框架搭建系列博客 前言 上一篇我们已经完成了项目的日志管理,在项目开发中日志会经常记录程序中的异常,供后续问题排查使用.本篇讲如何在webapi里加入异常处理机制. 目的和原则 1.程序任 ...

  5. 一个单js文件也可以运行vue

    新建一个hello.html文件,输入以下内容: <html> <head> <title></title> <script src=" ...

  6. 2.SpringBoot HelloWorld详解

    1.POM文件 父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...

  7. MySQL锁解决并发问题详解

    文章分为以下几个要点 问题描述以及解决过程 MySQL锁机制 数据库加锁分析 下面讨论的都是基于MySQL的InnoDB. 0. 问题描述以及解决过程 因为涉及到公司利益问题,所以下面很多代码和数据库 ...

  8. fatal error C1083: 无法打开包括文件: “SDKDDKVer.h”: No such file or directory(转)

    fatal error C1083: 无法打开包括文件: “SDKDDKVer.h”: No such file or directory 解决办法:(Vs2013中) 项目--右键--属性--配置属 ...

  9. pygame(class类)调用视图的方法

    以下将介绍pygame精灵动画的基础知识,希望对大家有帮助:1.在此,精灵类必须继承pygame.sprite.Sprite并初始化pygame.sprite.Sprite.__init__(self ...

  10. python2的比较函数,cmp

    class Shu(object): def __init__(self,ss): self.ss = ss def __str__(self): return '(%s: %s)' % (self. ...