Codeforces Round #459 (Div. 1) B. MADMAX
算法分析
博弈论sg函数 + 记忆化搜索
表示为 先手在 u 点 后手在 v 点 上一次操作的权值为 w 时,先手的胜负状况
考虑sg函数必胜必败态转移
sg的状态转移其实像是图上的dp转移
会转移到哪里呢,当前的先手为 u 后手为 v ,限制条件为 w
那么轮到 v 的这一轮时 先手就是 v ,后世就是 u 再往后任意走一个位置(我在这里假设成 e
并且到这个位置的权值要大于 w
那么就是转移到看 上,因为上一步是 u 走的一步权值为 的一步
那么记忆化搜索的过程就出来了
bool dfs(int u,int v,int w)
{if(vis[u][v][w]) return dp[u][v][w];vis[u][v][w] = 1;for(auto e : g[u]){if(e.second < w) continue;//不符合条件if(!dfs(v,e.first,e.second)) return dp[u][v][w] = true;}return dp[u][v][w] = false;
}
AC Code
#include<bits/stdc++.h>
using namespace std;
const int N = 110;int dp[N][N][28],vis[N][N][28];
vector<pair<int,int>> g[N];bool dfs(int u,int v,int w)//记忆化搜索
{if(vis[u][v][w]) return dp[u][v][w];//访问过 直接返回vis[u][v][w] = 1;//标记已经访问for(auto e : g[u])//转移下一个状态{if(e.second < w) continue;if(!dfs(v,e.first,e.second)) return dp[u][v][w] = true;//如果轮到 v 这一轮走的时候 走不了了 那么 u 就赢了}return dp[u][v][w] = false;//否则就输了
}
int main()
{int n,m;cin >> n >> m;for(int i = 1;i <= m;i ++){int u,v;char c;cin >> u >> v >> c;g[u].push_back({v,c - 'a'});}for(int i = 1;i <= n;i ++){for(int j = 1;j <= n;j ++)cout << (dfs(i,j,0) == true ? "A" : "B");cout <<"\n";}return 0;
}
Codeforces Round #459 (Div. 1) B. MADMAX相关推荐
- Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp
Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...
- Codeforces Round #459 (Div. 2)题解
补题 codeforces 918C 题意 给定一个含有通配符?和()的字符串,问有多少子串是括号匹配的 解题思路 首先考虑不用栈求括号匹配的方法: bool solve(char* s) {int ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- Codeforces Round #563 (Div. 2)/CF1174
Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...
- 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
- Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...
- Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...
最新文章
- centos7 下搭建git服务器
- matlab中的现代谱估计,请教一个Matlab关于现代功率谱估计的问题
- 关于windows的进程处理(七)
- Py之chatterbot:python包之Chatterbot包/wxpy包简介、安装、使用方法之详细攻略
- mysql 回滚段_史上最牛分析MySQL索引机制的实现!不接受反驳
- EasyPlayer Android RTSP播放器延迟再优化策略
- LeetCode 中级 - 第k个排列(60)
- python爬虫代码-Python爬虫教程:200行代码实现一个滑动验证码
- 线对 Line pairs度量空间频率
- SIM868模块+Arduino将位置信息上传到服务器
- php的include once,php include_once的使用方法详解
- ValueError: only one element tensors can be converted to Python scalars
- 通过JAVA从高德地图URL连接获取json数据 解析并存入数据库的程序举例
- 用户太多:互联网巨头之惑
- 2018/8/16第二周
- 七月行情有盼头——技术派=基础,资金流派和基本面派是工具,思维流是集大成者_96
- 两个数学家的问题,“你不知道我不知道你知道我知道”
- Linux下配置用msmtp和mutt发邮件
- 动态加载当前年份的前五年后十年
- oracle 11g 对不同平台搭建DG的支持和限制.
热门文章
- android联想搜索不到wifi,联想笔记本ThinkPad E430 无法搜索到无线网络的解决办法...
- linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享
- exe文件图标变成html,遭遇了一次exe文件图标丢失的问题
- Windows PE(WinPE)
- 二极管计算机原理,二极管的原理
- XILINX FPGA最小逻辑单元CLBs, Slices和LUT区别
- 用matlab画矩形波傅里叶变换,用matlab画出余弦函数的傅里叶变换图像
- 安卓x5webview 加载网页 失败_#PY小贴士# 抓下来的网页为什么没有我要的内容?...
- 在Android开发中遇到的MediaPlayer问题
- 德国人预测世界杯: 冠军是西班牙!