• (step 8.2.13)hdu 1524(A Chess Game)


    题目大意 : 在一个 有向无环图顶点上面有几个棋子, 2个人轮流操作, 每次操作就是找一个棋子往它能够移

    动的地方移动一格, 不能操作的人输. 输入第一行 为一个 N , 表示有 N 个顶点 0 -> N-1 标记, 然后

    接下来的N 行 代表 与第 i 行 相连的有哪几个顶点 , 每一行开头一个 M 表示 有M 哥点与 点 i 相连.

    然后接下来是 任意个询问, 一开始 是一个 M, 表示棋盘初始有 M 个棋子, 接下来的 M 个数 表示顶点i 上

    有棋子, M == 0 代表询问结束



    解题思路:

    1)有N个位置,其中存在拓扑关系,移动时必须遵守。最后移动者胜,问是否有必胜策略

    拓扑关系,说明是一个有向无环图。那么对于某个点的SG函数,便是他的后继结点中没有出现的最小的。(MEX操作),完全就是名字悬乎一点

    和求普通的SG函数一样。

    2)

    vector<int> v[maxn];


    以上一行代码定义了一个数组v,这个数组中的每一个元素都是一个向量(vector)


    代码如下:

    /*
     * 1524_1.cpp
     *
     *  Created on: 2013年9月2日
     *      Author: Administrator
     */
    #include <iostream>
    #include <vector>
    using namespace std;
    
    const int maxn = 1005;
    int n;
    vector<int> v[maxn];
    int sg[maxn];
    
    
    int getSG(int n){
    	if(sg[n] != -1){
    		return sg[n];
    	}
    	if(v[n].size() == 0){
    		return 0;
    	}
    
    	bool visited[maxn];
    	memset(visited,0,sizeof(visited));
    
    	int i;
    	for(i = 0 ; i < v[n].size() ; ++i){
    		sg[v[n][i]] = getSG(v[n][i]);
    		visited[sg[v[n][i]]] = true;
    	}
    
    	for(i = 0 ; ; ++i){
    		if(!visited[i]){
    			return i;
    		}
    	}
    }
    
    
    int main(){
    	while(scanf("%d",&n)!=EOF){
    		memset(sg,-1,sizeof(sg));
    
    		int i;
    		for(i = 0 ; i < n ; ++i){
    			v[i].clear();
    			int k;
    			scanf("%d",&k);
    			while(k--){
    				int a;
    				scanf("%d",&a);
    				v[i].push_back(a);
    			}
    		}
    
    		int m;
    		while(scanf("%d",&m)!=EOF,m){
    			int ans = 0;
    			while(m--){
    				int num ;
    				scanf("%d",&num);
    				ans ^= getSG(num);
    			}
    
    			if(ans == 0){
    				printf("LOSE
    ");
    			}else{
    				printf("WIN
    ");
    			}
    		}
    	}
    }
    
    



  • 相关阅读:
    Microsoft 补丁,文档下载
    web_dynpro_Tree1:
    右键的CONTEXT_MENU
    web_dynpro_ALV:(包ZLYTEST2)(alv 的事件只需注意一个R_PARAM就哦了)
    web_dynpro_SELECT_OPTION组件的使用:
    首日签到
    斐波那契数列
    C#正则表达式验证工具
    P210阶段3(个人所得税计算器)
    javascript基本语法
  • 原文地址:https://www.cnblogs.com/pangblog/p/3299659.html
Copyright © 2020-2023  润新知