有向图博弈问题。

能转移到一个必败态的就是必胜态。

能转移到的全是必胜态的就是必败态。

转移的时候可以用队列维护。

可以看这个 http://www.cnblogs.com/quintessence/p/6618640.html

#include<cstdio>
#include<queue>
using namespace std;
struct Node{
int who,pos;
};
queue<Node>q;
int n,len[2],to[2][7010],f[2][7010],cant[2][7010];
int main(){
scanf("%d",&n);
for(int i=0;i<2;++i){
scanf("%d",&len[i]);
for(int j=1;j<=len[i];++j){
scanf("%d",&to[i][j]);
}
}
f[0][0]=f[1][0]=2;
q.push((Node){0,0});
q.push((Node){1,0});
while(!q.empty()){
Node U=q.front(); q.pop();
if(f[U.who][U.pos]==2){
for(int i=1;i<=len[U.who^1];++i){
if(f[U.who^1][(U.pos-to[U.who^1][i]+n)%n]==0){
f[U.who^1][(U.pos-to[U.who^1][i]+n)%n]=1;
q.push((Node){U.who^1,(U.pos-to[U.who^1][i]+n)%n});
}
}
}
else{
for(int i=1;i<=len[U.who^1];++i){
if(f[U.who^1][(U.pos-to[U.who^1][i]+n)%n]==0){
++cant[U.who^1][(U.pos-to[U.who^1][i]+n)%n];
if(cant[U.who^1][(U.pos-to[U.who^1][i]+n)%n]==len[U.who^1]){
f[U.who^1][(U.pos-to[U.who^1][i]+n)%n]=2;
q.push((Node){U.who^1,(U.pos-to[U.who^1][i]+n)%n});
}
}
}
}
}
for(int i=0;i<2;++i){
for(int j=1;j<n;++j){
if(f[i][j]==0){
printf("Loop ");
}
else if(f[i][j]==1){
printf("Win ");
}
else{
printf("Lose ");
}
}
puts("");
}
return 0;
}

【动态规划】Codeforces Round #406 (Div. 2) C.Berzerk的更多相关文章

  1. Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索

    A. Berzerk 题目连接: http://codeforces.com/contest/786/problem/A Description Rick and Morty are playing ...

  2. Codeforces Round #406 (Div. 1)

    B题打错调了半天,C题想出来来不及打,还好没有挂题 AC:AB Rank:96 Rating:2125+66->2191 A.Berzerk 题目大意:有一个东东在长度为n的环上(环上点编号0~ ...

  3. Codeforces Round #406 (Div. 1) B. Legacy 线段树建图跑最短路

    B. Legacy 题目连接: http://codeforces.com/contest/786/problem/B Description Rick and his co-workers have ...

  4. 维护前面的position+主席树 Codeforces Round #406 (Div. 2) E

    http://codeforces.com/contest/787/problem/E 题目大意:给你n块,每个块都有一个颜色,定义一个k,表示在区间[l,r]中最多有k中不同的颜色.另k=1,2,3 ...

  5. 区间->点,点->区间,线段树优化建图+dijstra Codeforces Round #406 (Div. 2) D

    http://codeforces.com/contest/787/problem/D 题目大意:有n个点,三种有向边,这三种有向边一共加在一起有m个,然后起点是s,问,从s到所有点的最短路是多少? ...

  6. 有向图博弈+出度的结合 Codeforces Round #406 (Div. 2) C

    http://codeforces.com/contest/787/problem/C 题目大意:有一个长度为n的环,第1个位置是黑洞,其他都是星球.已知在星球上(不含第一个黑洞)有一位神.有两个人, ...

  7. 【Codeforces Round #406 (Div. 2)】题解

    The Monster 签到题,算一下b+=a和d+=c,然后卡一下次数就可以了. Not Afraid 只要一组出现一对相反数就是安全的. Berzerk 题意:[1,n],两个人轮流走,谁能走到1 ...

  8. 【转】Codeforces Round #406 (Div. 1) B. Legacy 线段树建图&&最短路

    B. Legacy 题目连接: http://codeforces.com/contest/786/problem/B Description Rick and his co-workers have ...

  9. Codeforces #Round 406(Div.2)

    来自FallDream的博客,未经允许,请勿转载,谢谢. ------------------------------------------------------- 大家好,我是一个假人.在学习O ...

随机推荐

  1. js_页面关闭beforeunload事件

    做圆桌爆文公众号的时候,需要对阅读的文章进行时间统计.是这个公众号的核心功能,客户把文章转发到朋友圈或者转给朋友,记录谁阅读此文章和阅读时长进行记录,从而展示给客户. 功能点是,关闭页面时触发事件,请 ...

  2. perl HTML::HeadParser获取html头部信息

    use LWP::Simple; use HTML::HeadParser; use utf8; binmode(STDOUT, ":encoding(gbk)"); #设置win ...

  3. perl中的lock

    #!/usr/bin/env perl -w use strict; use threads; use threads::shared; ; print "count的起始值为:$count ...

  4. MFC单文档框架分析及执行流程(转)

    原文转自 https://blog.csdn.net/u011619422/article/details/40402705 首先来分析一下MFC单文档类的结构: 它包括如下几个类: CAboutDl ...

  5. linux pthread【转】

    转自:http://www.cnblogs.com/alanhu/articles/4748943.html Posix线程编程指南(1) 内容:  一. 线程创建  二.线程取消 关于作者  线程创 ...

  6. linux驱动基础系列--Linux 串口、usb转串口驱动分析

    前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...

  7. 简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环)

    简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环) http://www.cnblogs.com/M18-BlankBox/p/5881700.html

  8. mysql 数据库修改名字

    通过information_schema信息修改rename database的目的 mysql 没有rename database 命令,只能变相修改表到目标库里的表来实现: 拼接reanme ta ...

  9. [session篇]看源码学习session(一)

    假如你是使用过或学习过PHP,你一定觉得很简单.session只不过是$_SESSION就可以搞得,这还不简单只是对一个key-value就能工作了.我觉得可以大多数的phper都是这样的,这是语言本 ...

  10. leetcode 121 122 123 . Best Time to Buy and Sell Stock

    121题目描述: 解题:记录浏览过的天中最低的价格,并不断更新可能的最大收益,只允许买卖一次的动态规划思想. class Solution { public: int maxProfit(vector ...