传送门:http://codeforces.com/contest/918/problem/D

本题是一个组合游戏问题——DAG上的动态规划问题。

有一张有向无环图(DAG)。有两个玩家在这张图上进行一个游戏:初始时,玩家A、B各占据一个结点,之后轮流沿着有向边移动;移动时的边权是不下降的。无法移动者输。

请打印一个n×n矩阵,这个矩阵的元代表获胜方(A/B),其ij列元的含义如下:玩家A的初始位置为结点i,玩家B的初始位置为结点j

对于DAG上的组合游戏,可以考虑DP。

定义布尔变量dp(u,v,c),代表当先手的初始位置为结点u,后手的初始位置为结点v,且上一次移动的边权为c时,先手是否能移动。则:

若存在有向边<u,x>,使得c≤cost<u,x>,且dp(v,x,cost<u,x>)=0,于是,一旦先手到达结点x后,后手将无法移动:于是先手必胜,即dp(u,v,c)=1;否则先手必败,即dp(u,v,c)=0。

参考程序如下:

#include <stdio.h>
#include <string.h>
#define MAX_N 101
#define MAX_C 26 int n, m;
int adj[MAX_N][MAX_N];
int dp[MAX_N][MAX_N][MAX_C]; int dfs(int u, int v, int c)
{
if (dp[u][v][c] != -) return dp[u][v][c];
for (int x = ; x <= n; x++) {
if (adj[u][x] >= c && !dfs(v, x, adj[u][x]))
return dp[u][v][c] = ;
}
return dp[u][v][c] = ;
} int main(void)
{
scanf("%d%d", &n, &m);
memset(adj, -, sizeof(adj));
memset(dp, -, sizeof(dp));
while (m--) {
int u, v;
char ch;
scanf("%d%d %c", &u, &v, &ch);
adj[u][v] = ch - 'a';
}
for (int i = ; i <= n; i++) {
for (int j = ; j <= n; j++) {
if (dfs(i, j, )) putchar('A');
else putchar('B');
}
putchar('\n');
}
return ;
}

最新文章

  1. [Linux] 账户管理命令(一)
  2. selenium 关于富文本的处理
  3. 使用Adobe Edge Inspect在各种设备中轻松测试同一页面
  4. access denied (&quot;java.net.SocketPermission&quot; &quot;localhost:1527&quot; &quot;listen,resolve&quot;)
  5. oracle 树形SQL
  6. Leetcode#106 Construct Binary Tree from Inorder and Postorder Traversal
  7. SWD应用接口
  8. Mybatis 学习历程
  9. Cogs 1070. [焦作一中2012] 玻璃球游戏 带权并查集,逆序处理
  10. 解决linux下部署科大讯飞时的版本过低问题
  11. C# Socket网络编程
  12. Unity3d外包团队:Unity3d最新版本更新内容
  13. man statd(rpc.statd中文手册)
  14. 017-并发编程-Condition
  15. 模板学习实践二 pointer
  16. 【CF887E】Little Brother 二分+几何
  17. nyoj 数独
  18. Socket通信原理简介
  19. linux 文件处理大杂烩
  20. 最长上升子序列(LIS)n2 nlogn算法解析

热门文章

  1. jQuery 自定义动画效果
  2. Java代码规范_插件_阿里java开发手册
  3. 可写可选dropdownlist(只测试过ie)
  4. thinkphp结合云之讯做短信验证码
  5. [Swift通天遁地]九、拔剑吧-(3)创建多种自定义Segment分段样式的控件
  6. jQuery获取Select元素
  7. centos语言设置
  8. An problem about date 根据年月日计算 星期几
  9. 【洛谷3224/BZOJ2733】[HNOI2012]永无乡 (Splay启发式合并)
  10. [转]asp.net MVC 常见安全问题及解决方案