算法分析

博弈论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相关推荐

  1. Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp

    Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...

  2. Codeforces Round #459 (Div. 2)题解

    补题 codeforces 918C 题意 给定一个含有通配符?和()的字符串,问有多少子串是括号匹配的 解题思路 首先考虑不用栈求括号匹配的方法: bool solve(char* s) {int ...

  3. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  4. 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 ...

  5. 构造 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 的例子可以 ...

  6. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  7. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  8. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  9. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  10. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

最新文章

  1. centos7 下搭建git服务器
  2. matlab中的现代谱估计,请教一个Matlab关于现代功率谱估计的问题
  3. 关于windows的进程处理(七)
  4. Py之chatterbot:python包之Chatterbot包/wxpy包简介、安装、使用方法之详细攻略
  5. mysql 回滚段_史上最牛分析MySQL索引机制的实现!不接受反驳
  6. EasyPlayer Android RTSP播放器延迟再优化策略
  7. LeetCode 中级 - 第k个排列(60)
  8. python爬虫代码-Python爬虫教程:200行代码实现一个滑动验证码
  9. 线对 Line pairs度量空间频率
  10. SIM868模块+Arduino将位置信息上传到服务器
  11. php的include once,php include_once的使用方法详解
  12. ValueError: only one element tensors can be converted to Python scalars
  13. 通过JAVA从高德地图URL连接获取json数据 解析并存入数据库的程序举例
  14. 用户太多:互联网巨头之惑
  15. 2018/8/16第二周
  16. 七月行情有盼头——技术派=基础,资金流派和基本面派是工具,思维流是集大成者_96
  17. 两个数学家的问题,“你不知道我不知道你知道我知道”
  18. Linux下配置用msmtp和mutt发邮件
  19. 动态加载当前年份的前五年后十年
  20. oracle 11g 对不同平台搭建DG的支持和限制.

热门文章

  1. android联想搜索不到wifi,联想笔记本ThinkPad E430 无法搜索到无线网络的解决办法...
  2. linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享
  3. exe文件图标变成html,遭遇了一次exe文件图标丢失的问题
  4. Windows PE(WinPE)
  5. 二极管计算机原理,二极管的原理
  6. XILINX FPGA最小逻辑单元CLBs, Slices和LUT区别
  7. 用matlab画矩形波傅里叶变换,用matlab画出余弦函数的傅里叶变换图像
  8. 安卓x5webview 加载网页 失败_#PY小贴士# 抓下来的网页为什么没有我要的内容?...
  9. 在Android开发中遇到的MediaPlayer问题
  10. 德国人预测世界杯: 冠军是西班牙!