ACM-ICPC 2018 徐州赛区网络预赛 B BE, GE or NE(博弈,记忆化搜索)
链接https://nanti.jisuanke.com/t/31454
思路
- 开始没读懂题,也没注意看数据范围(1000*200的状态,记忆化搜索随便搞)
- 用记忆化搜索处理出来每个状态的胜负情况
- 因为每个人都会选择最优的,因此记忆化搜索的过程其实就是在模拟两个人每一步决策所带来的胜负情况,
只要返回一个必胜,就直接返回(因为会选择最优)
然后在没有返回必胜的状态下,有平局就选择平局,没有平局就只能输了
#include<bits/stdc++.h>
#define st 100
#define M 1005
using namespace std;
int f[M][500],n,m,l,r,a[M],b[M],c[M],ret,i;
int dfs(int d,int p){
if(d==n){
if(p<=l)return 4;else if(p>=r)return 1;else return 2;
}
int &ans=f[d][p+st];
if(ans!=-1)return ans;
int win,los,ok=0,tp;
if(d&1){win=4;los=1;}else{win=1;los=4;}
if(a[d]){
tp=dfs(d+1,min(100,p+a[d]));
if(tp==win)return ans=win;
if(tp==2) ok=1;
}
if(b[d]){
tp=dfs(d+1,max(-100,p-b[d]));
if(tp==win)return ans=win;
if(tp==2)ok=1;
}
if(c[d]){
tp=dfs(d+1,-p);
if(tp==win)return ans=win;
if(tp==2)ok=1;
}
if(ok)return ans=2;
return ans=los;
}
int main(){
memset(f,-1,sizeof(f));
scanf("%d%d%d%d",&n,&m,&r,&l);
for(i=0;i<n;i++)scanf("%d%d%d",&a[i],&b[i],&c[i]);
ret=dfs(0,m);
if(ret==1)cout<<"Good Ending"<<endl;
else if(ret==4)cout<<"Bad Ending"<<endl;
else cout<<"Normal Ending"<<endl;
}
知识点
- dp数组储存胜负状态(记忆化搜索,博弈)
ACM-ICPC 2018 徐州赛区网络预赛 B BE, GE or NE(博弈,记忆化搜索)的更多相关文章
- ACM-ICPC 2018 徐州赛区网络预赛 B. BE, GE or NE
In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl named &qu ...
- ACM-ICPC 2018 徐州赛区网络预赛 B BE, GE or NE(记忆化搜索)
https://nanti.jisuanke.com/t/31454 题意 两个人玩游戏,最初数字为m,有n轮,每轮三个操作给出a b c,a>0表示可以让当前数字加上a,b>0表示可以让 ...
- ACM-ICPC 2018 徐州赛区网络预赛 B BE, GE or NE 【模拟+博弈】
题目:戳这里 题意:A和B博弈,三种操作分别是x:加a,y:减b,z:取相反数.当x或y或z为0,说明该操作不可取,数据保证至少有一个操作可取,给定一个区间(l,k)和原始数字m,如果A和B在n次操作 ...
- 徐州网络赛B-BE,GE or NE【记忆化搜索】【博弈论】
In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl named &qu ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心)
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心) Trace 问答问题反馈 只看题面 35.78% 1000ms 262144K There's a beach in t ...
- ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer (最大生成树+LCA求节点距离)
ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer J. Maze Designer After the long vacation, the maze designer ...
- 计蒜客 1460.Ryuji doesn't want to study-树状数组 or 线段树 (ACM-ICPC 2018 徐州赛区网络预赛 H)
H.Ryuji doesn't want to study 27.34% 1000ms 262144K Ryuji is not a good student, and he doesn't wa ...
- ACM-ICPC 2018 徐州赛区网络预赛 B(dp || 博弈(未完成)
传送门 题面: In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl n ...
- ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study
262144K Ryuji is not a good student, and he doesn't want to study. But there are n books he should ...
随机推荐
- 脚手架搭建vue框架
一. node安装 1)如果不确定自己是否安装了node,可以在命令行工具内执行: node -v (检查一下 版本): 2)如果 执行结果显示: xx 不是内部命令,说明你还没有安装node , ...
- http406错误
The resource identified by this request is only capable of generating responses with characteristics ...
- WIN7安装jdk1.7
@官网下载地址 我的64位的 下载后双击,一直下一步就行.出现下面这个关掉就行 新建环境变量 JAVA_HOME C:\Program Files\Java\jdk1.7.0_04 新建环境变量CLA ...
- 32位Server2008添加IIS
- Linux系统不能解析域名
问题:正在使用的Linux系统突然有一天不能解析域名gus.xxxxxxxx.com? # ping gus.xxxxxxxx.com ping: unknown host gus-xxxxxxxx. ...
- linux命令学习之:mv
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 命令格式 mv [选项] 源文件或目 ...
- log4j 产生的日志位置设置和catalina.home、catalina.base
方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...
- ERROR: APK path is not specified for
1. 打开project structure 2.设置outpath路径 最好为绝对路径 点击确定 重新编译即可. Note: Android Studio版本使用
- Django中使用django_debug_toolbar
一 概述 django_debug_toolbar 是django的第三方工具包,给django扩展了调试功能. 包括查看执行的sql语句,db查询次数,request,headers,调试概览等. ...
- php ActiveMQ的发送消息,与处理消息
我们以一个简单的用户注册为例,当用户点击注册按钮后,我们发送一个消息,后台php接收到该消息然后处理. 1.php代码如下: <?php $stomp = new Stomp('tcp://19 ...