[原博客] POJ 2425 A Chess Game
题目链接
题意:给定一个有向无环图(DAG),上面放有一些旗子,旗子可以重合,两个人轮流操作,每次可以把一个旗子从一个位置移动到相邻的位置,无法移动时输,询问先手是否必胜。
这道题可以把每个旗子看作单独的一个游戏,那么所有这些旗子的状态SG值,就是这些旗子各自SG值的Xor和,可以记忆化搜索dfs,暴力算SG值判断即可。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
//by zrt
//problem:
using namespace std;
typedef long long LL;
const int inf(0x3f3f3f3f);
);
int n;
],X[],P[],tot;
inline void add(int x,int y){
    P[++tot]=y;X[tot]=H[x];H[x]=tot;
}
];
int dfs(int x){
    if(~sg[x]) return sg[x];
    ];
    memset(nxt,,sizeof nxt);
    for(int i=H[x];i;i=X[i]){
        nxt[dfs(P[i])]=;
    }
    ;;i++){
        if(!nxt[i]){
            return sg[x]=i;
        }
    }
}
int main(){
    #ifdef LOCAL
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif
    while(~scanf("%d",&n)){
        memset(H,,;
        memset(sg,-,sizeof sg);
        ,x;i<n;i++){
            scanf("%d",&x);
            ,y;j<x;j++){
                scanf("%d",&y);
                add(i,y);
            }
        }
        int q;
        while(scanf("%d",&q),q){
            ;
            ,x;i<q;i++){
                scanf("%d",&x);
                SG^=dfs(x);
            }
            if(SG) puts("WIN");
            else puts("LOSE");
        }
    }
    ;
}
[原博客] POJ 2425 A Chess Game的更多相关文章
- [原博客] POJ 1067 取石子游戏
		
题目链接有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者 ...
 - [原博客] POJ 1740 A New Stone Game
		
题目链接题意:有n堆石子,两人轮流操作,每次每个人可以从一堆中拿走若干个扔掉(必须),并且可以从中拿走一些分到别的有石子的堆里(可选),当一个人不能拿时这个人输.给定状态,问是否先手必胜. 我们参考普 ...
 - [原博客] POJ 1704 Georgia and Bob
		
题目链接题意:如图,Georgia和Bob在玩游戏.一个无限长的棋盘上有N个旗子,第i个棋子的位置可以用Pi表示.现在Georgia先走.每个人每一次可以把一枚棋子向左移动任意个格子,但是不能超越其他 ...
 - [原博客] POJ 2484 A Funny Game
		
题目链接题意:有n个硬币排成一圈,两个人轮流操作,每次可以取走一个或者相邻的连个硬币(只算最开始相邻的,取之后才相邻的不算),问先手必胜还是必败. 这个题可以证明若n>=3,则先手必败.对称博弈 ...
 - [原博客] POJ 2505 A multiplication game 组合游戏
		
题目链接题意: 有一个数p=1,甲乙两人轮流操作,每次可以把p乘2~9中的一个数,给定一个n,当一个人操作后p>=n,那么这个人赢,问先手是否必胜. 必胜状态:存在一种走法走到一个必败状态. 必 ...
 - [原博客] POJ 2975 Nim 统计必胜走法个数
		
题目链接题意介绍了一遍Nim取石子游戏,可以看上一篇文章详细介绍.问当前状态的必胜走法个数,也就是走到必败状态的方法数. 我们设sg为所有个数的Xor值.首先如果sg==0,它不可能有必胜走法,输出0 ...
 - 原博客地址http://blog.chinaunix.net/uid/20656672.html弃用
		
原博客地址http://blog.chinaunix.net/uid/20656672.html弃用
 - [原博客] BZOJ 2242 [SDOI2011] 计算器
		
题目链接 noip级数论模版题了吧.让求三个东西: 给定y,z,p,计算`Y^Z Mod P` 的值. 给定y,z,p,计算满足`xy≡ Z ( mod P )`的最小非负整数. 给定y,z,p,计算 ...
 - 原博客地址http://blog.chinaunix.net/uid/20656672.html不再维护(10年前数百篇oracle/teradata性能优化、故障处理案例)
		
原博客地址http://blog.chinaunix.net/uid/20656672.html不再维护(数百篇oracle/teradata性能优化.故障处理原创文章) 858871 top 500 ...
 
随机推荐
- web.xml配置文件 taglib
			
web.xml的内容如下: <?xml version="1.0" encoding="UTF-8"?><web-app version= ...
 - 一个现代化的JSON库Moshi针对Android和Java
			
Moshi 是一个现代化的JSON库针对Android和Java.它可以很容易地解析JSON成Java对象: String json = ...; Moshi moshi = new Moshi.Bu ...
 - iOS之应用内跳转系统设置相关界面
			
在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等.在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个pre ...
 - Java public, private, protected and default
			
Class Package Subclass World public y y y ...
 - C# 自定义排序
			
/// <summary> /// 实体 /// </summary> public class Product { public int ID { get; set; } p ...
 - DBCP的配置参数
			
tomcatde DHCP的配置 <Resource driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver&quo ...
 - 从零基础到App Store
 - C#下如何用NPlot绘制期货股票K线图(2):读取数据文件让K线图自动更新
			
[内容介绍]上一篇介绍了K线图的基本绘制方法,但很不完善,本篇增加了它直接读取数据的功能,这对于金融市场的数据量大且又需要动态刷新功能的实现很重要. [实现方法] 1.需要一个数据文件,这里用的是直接 ...
 - redis研究之watch
			
具体的看注释,代码如下: public static void TransTest() { RedisClient client1 = new RedisClient(host, port); Red ...
 - 03_MySQL中文乱码处理_02_确保MySQL插入数据不乱码的解决方法
			
[要统一MySQL数据库客户端 和 服务端的字符集] 如下,就是不统一的情况: 通常,MySQL数据库的下面几个字符集(客户端 和 服务端)统一成一个字符集(即" show variable ...