Codeforces 917B MADMAX (DP+博弈)
<题目链接>
题目大意:
给定一个DAG图,其中图的边权是给定的字符所对应的ascii码,现在A先手,B后手,每次沿DAG图走一步,但是第i次走的边权一定要大于等于第i-1次走的边权(这里是值两个人一起的第$i$次,不是一个人走动的第$i$次),最先无法走动的人输。让你对$A,B$的起始位置邻接矩阵$(i,j)$(代表A从$i$点出发,$B$从$j$点开始出发),对应给出他们的胜负情况,如果A胜,输出A,反之,输出B。
解题分析:
$dp[x][y][k]$表示先手$x$,后手$y$,边权为$k$对应的胜负情况。
对于$x$所有能够直接到达的点$v$,状态转移为$dp[y][v][nowval]$,前一个状态的后手$y$变成了当前的先手状态,$nowval$表示$x->v$的边权。
如果存在至少一个$v$,使得$dp[y][v][nowval]$为必败状态,则上一个状态$dp[x][y][k]$为必胜状态(因为他们都是选择最优的情况走)。
$dp[x][y][k]=0$表示先手必败,反之则必胜。
#include <bits/stdc++.h>
using namespace std;
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define fi first
#define se second
#define pb push_back
const int N = ; int dp[N][N][];
typedef pair<int,int>P;
vector<P>G[N];
int n,m; bool DP(int x,int y,int k){
if(dp[x][y][k]!=-)return dp[x][y][k];
for(int i=;i<G[x].size();i++){
int v=G[x][i].fi,cost=G[x][i].se;
if(cost>=k && DP(y,v,cost)==) //如果下一步存在先手必败的情况,则这一步先手必胜
return dp[x][y][k]=;
}
return dp[x][y][k]=; //为0表示先手必败
}
int main(){
cin>>n>>m;
rep(i,,m) {
int u,v;char c;cin>>u>>v>>c;
G[u].pb(P(v,c));
}
memset(dp,-,sizeof dp);
rep(i,,n) rep(j,,n){
DP(i,j,);
}
rep(i,,n) {
rep(j,,n)
printf("%c",dp[i][j][]?'A':'B');
puts("");
}
}
Codeforces 917B MADMAX (DP+博弈)的更多相关文章
- codevs 1421 秋静叶&秋穣子(树上DP+博弈)
1421 秋静叶&秋穣子 题目描述 Description 在幻想乡,秋姐妹是掌管秋天的神明,作为红叶之神的姐姐静叶和作为丰收之神的妹妹穰子.如果把红叶和果实联系在一 起,自然会想到烤红薯 ...
- hdu6199 gems gems gems dp+博弈
/** 2017 ACM/ICPC Asia Regional Shenyang Online 解题报告 题目:hdu6199 gems gems gems 链接:http://acm.hdu.edu ...
- POJ 2068 NIm (dp博弈,每个人都有特定的取最大值)
题目大意: 有2n个人,从0开始编号,按编号奇偶分为两队,循环轮流取一堆有m个石子的石堆,偶数队先手,每个人至少取1个,至多取w[i]个,取走最后一个石子的队伍输.问偶数队是否能赢. 分析: 题目数据 ...
- CodeForces 918D MADMAX(博弈+记忆化搜索)
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- Codeforces Round #459 (Div. 2) D. MADMAX DFS+博弈
D. MADMAX time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...
- Codeforces 918D/917B - MADMAX
传送门:http://codeforces.com/contest/918/problem/D 本题是一个组合游戏问题——DAG上的动态规划问题. 有一张有向无环图(DAG).有两个玩家在这张图上进行 ...
- Codeforces 918D MADMAX 图上dp 组合游戏
题目链接 题意 给定一个 \(DAG\),每个边的权值为一个字母.两人初始各占据一个顶点(可以重合),轮流移动(沿着一条边从一个顶点移动到另一个顶点),要求每次边上的权值 \(\geq\) 上一次的权 ...
- CodeForces 1099F - Cookies - [DFS+博弈+线段树]
题目链接:https://codeforces.com/problemset/problem/1099/F Mitya and Vasya are playing an interesting gam ...
- Codeforces 918D - MADMAX
918D - MADMAX 思路: dp+记忆化搜索 状态:dp[i][j][w]表示先手在i节点,后手在j节点,这一轮的字母为w的结果,如果为true,则表示先手必赢,否则后手必赢. 状态转移:如果 ...
随机推荐
- 5 Things You Should Know About the New Maxwell GPU Architecture
The introduction this week of NVIDIA’s first-generation “Maxwell” GPUs is a very exciting moment for ...
- 西安电子科技大学第16届程序设计竞赛 G-小国的复仇
西安电子科技大学第16届程序设计竞赛网络同步赛 G-小国的复仇 2 链接:https://www.nowcoder.com/acm/contest/107/G来源:牛客网 题目描述 众所周知,汀老师是 ...
- 杂项:UUID
ylbtech-杂项:UUID UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部 ...
- TCG卡牌游戏研究:《炉石战记:魔兽英雄传》所做的改变
转自:http://www.gameres.com/665306.html TCG演进史 说到卡牌游戏,大家会联想到什么呢? 是历史悠久的扑克牌.风靡全球的<MTG 魔法风云会>与< ...
- 数据库:ubantu下MySQL安装指南
http://wiki.ubuntu.org.cn/MySQL%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97 安装MySQL sudo apt-get install mys ...
- HDLM命令dlnkmgr详解之五_set
set命令用来设置HDLM的操作环境及参数. set操作设置的大部分是dlnkmgr view -sys命令中显示的参数值 命令格式 dlnkmgr set { -lb on [ -lbtype { ...
- SpringBoot表单验证
需求:年龄在18岁以下的女生不能注册 处理器中的写法: 实体类中的写法:
- MSSQL 当前数据库中已存在用户或角色,SQLServer2008,错误15023,
原因: sql server中“登录”与“用户”的区别,“登录”用于用户身份验证,而数据库“用户”帐户用于数据库访问和权限验证.登录通过安全识别符 (SID) 与用户关联.将数据库恢复到其他服务器时, ...
- 多线程 wait(),notify()方法,案例总结
废话不多说,案例如下 package com.xujingyang.Exok; /** * 商品类 * @author 徐景洋 */ public class Goods { private Stri ...
- bzoj 2653 middle(主席树)
题面:https://vjudge.net/problem/HYSBZ-2653 博客:https://blog.csdn.net/litble/article/details/78984846 这个 ...