首页 > 其他分享 >sg函数

sg函数

时间:2022-08-21 09:44:43浏览次数:53  
标签:函数 idx int res d% ++ sg

在一张有向无环图中,对于每个点 uu,设其所有能到的点的 SG 函数值集合为集合 A,那么 u 的 SG 函数值为 mex(A),记做 SG(u)=mex(A) 集合当中不存在的最小自然数
只有一个棋子 先手必胜=起手所在位置不等于0
多个棋子 先手必胜=所有起点所在位置异或和不等于0

#include <cstdio>
#include <cstring>
#include <set>

using namespace std;

const int N = 2010, M = 6010;

int n, m, k;
int h[N], e[M], ne[M], idx;
int f[N];

void add(int a, int b)
{
    e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}

int sg(int u)
{
    if (f[u] != -1) return f[u];//能返回就返回

    set<int> S;
    for (int i = h[u]; ~i; i = ne[i])
    {
        int j = e[i];
        S.insert(sg(j));//存所有边
    }

    for (int i = 0; ; i ++ )
        if (S.count(i) == 0)
        {
            f[u] = i;
            break;
        }

    return f[u];
}

int main()
{
    scanf("%d%d%d", &n, &m, &k);
    memset(h, -1, sizeof h);

    for (int i = 0; i < m; i ++ )
    {
        int a, b;
        scanf("%d%d", &a, &b);
        add(a, b);
    }

    memset(f, -1, sizeof f);

    int res = 0;
    for (int i = 0; i < k; i ++ )
    {
        int u;
        scanf("%d", &u);
        res ^= sg(u);//有向无环图从sg(起点)
    }

    if (res) puts("win");
    else puts("lose");

    return 0;
}


标签:函数,idx,int,res,d%,++,sg
From: https://www.cnblogs.com/liang302/p/16609350.html

相关文章

  • 给 TypeScript 回调函数定义接口
    回调函数定义接口就目前我所知道的有两种方式,第一个就是直接声明一个interface,第二个就是直接在函数的回调函数参数写类型。(1)第一种:定义接口,回调函数直接使用接口interf......
  • Flink 内置函数
    转载:https://blog.csdn.net/u011707542/article/details/101013751?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST......
  • python获取返回的json中的某个字段值的函数
    响应报文的json一般为字典或者是列表嵌套字段的形式     defget_json_value(a,k,l:list):""":parama:传入的数据:paramkey:获取哪个字段值......
  • C语言指针与函数相关编程实例练习题
    指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。本......
  • 【笔记】greatest/least函数&Round函数
    刷了一下力扣,发现有很多的函数是自己不清楚的,用了这些函数是比较容易得出结果的,不用自己费心去实现一些奇怪的东西1.最大最小值链接:https://leetcode.cn/problems/number......
  • 视图、触发器、存储过程、事务(掌握)、内置函数、流程控制、循环结构、索引与慢查询优
    视图SQL语句执行的结果是一张虚拟表,我们可以基于这张表做其他的操作,如果这张虚拟表需要频繁使用,为了方便可以将这张虚拟表保存起来,保存之后就称之为视图(view)。视图的本......
  • 函数式编程-Lambda的延迟执行
    函数式编程在兼顾面向对象特性的基础上,Java语言通过Lambda表达式与方法引用等,为开发者打开函数式编程的大门,下面我们做一个初探Lambda的延迟执行 有些场景的代码执行后......
  • 函数式接口概念和使用
    函数式接口概念函数式接口在Java中是指:有且仅有一个抽象方法的接口函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可......
  • 原型链、继承、构造函数的构建
    构造函数构建es6的形式classclassPerson{ constructor(){//构造器 this.name='jack' }}es3的形式functionfunctionPerson(){ this.name='jack'}使......
  • MySQL JSON函数文档搬运
    本文搬运了MySQL对JSON的支持相关的函数/*自MySQL5.7版本以后,加入了JSON字段类型支持,并提供一系列函数实测字段类型设置为varchar,只要字段值为合法json,MYSQLJSO......