cf787c 博弈论+记忆化搜索
好题,单纯的就是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 博弈论+记忆化搜索的更多相关文章
- hdu 4753 Fishhead’s Little Game 博弈论+记忆化搜索
思路:状态最多有2^12,采用记忆化搜索!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm& ...
- poj 1085 Triangle War 博弈论+记忆化搜索
思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: #include<ios ...
- bzoj3895: 取石子(博弈论,记忆化搜索)
3895: 取石子 Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 361 Solved: 177[Submit][Status][Discuss] D ...
- Codeforces Round #459 (Div. 2):D. MADMAX(记忆化搜索+博弈论)
D. MADMAX time limit per test1 second memory limit per test256 megabytes Problem Description As we a ...
- 徐州网络赛B-BE,GE or NE【记忆化搜索】【博弈论】
In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl named &qu ...
- hdu 4111 Alice and Bob 记忆化搜索 博弈论
Alice and Bob Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- Codeforces Round #459 (Div. 2):D. MADMAX(记忆化搜索+博弈论)
题意 在一个有向无环图上,两个人分别从一个点出发,两人轮流从当前点沿着某条边移动,要求经过的边权不小于上一轮对方经过的边权(ASCII码),如果一方不能移动,则判负.两人都采取最优策略,求两人分别从每 ...
- [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索
1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...
- 【BZOJ-3895】取石子 记忆化搜索 + 博弈
3895: 取石子 Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 263 Solved: 127[Submit][Status][Discuss] D ...
随机推荐
- 音乐播放和视频播放--pyglet(一)
最近,开始学习pyglet库.通过几天的学习,深刻的体会了python第三方模块的强大.我一直想做多媒体开发,曾经尝试用C语言进行编写,但是C语言在GUI开发上难度较大,要写一个界面出来得码很多冗余的 ...
- CodeForces786B 线段树 + 最短路
给定n颗行星,q次处理,地球位置为s,求解在q次处理后,地球到每一颗行星的位置. 其中q有三种不同的操作: 输入v,u,wv,u,w,构建一条从vv到uu的代价为ww的路线 输入u,l,r,wu,l, ...
- 配置GitLab Push 自动触发Jenkins构建
配置GitLab Push 自动触发Jenkins构建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客是对之前的笔记:https://www.cnblogs.com/yin ...
- redis 启动停止脚本
redis 启动停止脚本,该redis需要密码登录,如没有密码,去掉stop函数里的 -a #!/bin/sh # #chkconfig: 2345 80 90 # Simple Redis init ...
- java日期相关
JAVA中获得一个月最大天数的方法 参考博客:http://www.cnblogs.com/relucent/p/4566582.html Calendar 类是一个抽象类,为日历字段之间的转换提供了 ...
- Study 3 —— Python运算符
参考资料:http://www.runoob.com/python/python-operators.html#ysf2 定义变量: a = 10, b = 20 算术运算符: 运算符 描述 实例 ...
- 神级程序员通过两句话带你完全掌握Python最难知识点——元类!
千万不要被所谓"元类是99%的python程序员不会用到的特性"这类的说辞吓住.因为 每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生 ...
- HITS算法--从原理到实现
本文介绍HITS算法的相关内容. 1.算法来源 2.算法原理 3.算法证明 4.算法实现 4.1 基于迭代法的简单实现 4.2 MapReduce实现 5.HITS算法的缺点 6.写在最后 参考资料 ...
- dos 设置 Windows 网络命令
dos 设置Windows 命令: netsh interface ip set address name="本地连接" source=static addr=172.16.12. ...
- JavaScript之原生接口类设计
//接口类 var Interface = function(name , methods){ if(arguments.length!=2){ ...