题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4664

题意:给出一个n个点的凸包(不存在三点共线)。每次可以选择两个点连线,但是任意两条线只能在顶点处相交。若某一方连完线先后出现一个三角形,则该方为胜者,游戏结束。现在有若干个这样的凸包,每次双方可选择任意一个凸包连线。但是某个凸包一旦被连成一个三角形,则不能在该凸包上连线。

思路:因为若一条线的两个端点之一已经有一条线通过,则该条线连完之后必输。因此一个凸包连一条线就是将这个凸包分成两部分,因此可计算n个点时的SG值。最后发现,前69个没规律,从n=70开始循环节为34。

int SG[N];

int DFS(int n)
{
    if(n<=1) return 0;
    if(SG[n]!=-1) return SG[n];
    int p[50]={0},i;
    for(i=0;i<=n-2;i++)
    {
        p[DFS(i)^DFS(n-2-i)]=1;
    }
    i=0;
    while(p[i]) i++;
    return i;
}

int cal(int x)
{
    if(x<=1) return 0;
    return DFS(x);
}

void init()
{
    clr(SG,-1);
    int i;
    FOR0(i,N) SG[i]=cal(i);
}

int n;

int get(int x)
{
    if(x<=69) return SG[x];
    x=x-69;
    x=(x-1)%34+1+69;
    return SG[x];
}

int main()
{
    init();
    rush()
    {
        RD(n);
        int i,x,ans=0;
        FOR1(i,n) RD(x),ans^=get(x);
        if(ans) puts("Carol");
        else puts("Dave");
    }
}

HDU 4664 Triangulation(SG函数)的更多相关文章

  1. S-Nim HDU 1536 博弈 sg函数

    S-Nim HDU 1536 博弈 sg函数 题意 首先输入K,表示一个集合的大小,之后输入集合,表示对于这对石子只能去这个集合中的元素的个数,之后输入 一个m表示接下来对于这个集合要进行m次询问,之 ...

  2. hdu 1848 简单SG函数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1848 Problem Description 任何一个大学生对菲波那契数列(Fibonacci num ...

  3. HDU 4664 Triangulation(2013多校6 1010题,博弈)

    Triangulation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  4. hdu 4664 Triangulation(题意已在讨论版中说明)

    题意: 给定n个平面(平面之间相互独立),每个平面上有一些点,并且构成凸集,C和D轮流选一个平面连接两个点画线段,并保证线段之间除了端点之外没有其它交点,当平面上出现一个完整的三角形之后此平面就不能继 ...

  5. hdu 4664 Triangulation 博弈论

    看到这题时,当时还不会做,也没搞懂sg函数,于是狠狠的钻研了下博弈论,渐渐的知道了sg函数…… 现在在来做这题就很容易了,1A 打表容易发现在80左右的时候就出现循环节了 代码如下: #include ...

  6. HDU 4664 Triangulation【博弈论】

    一个平面上有n个点(一个凸多边形的顶点),每次可以连接一个平面上的两个点(不能和已经连接的边相交),如果平面上已经出现了一个三角形,则不能在这个平面上继续连接边了. 现在总共有N个平面,每个平面上都有 ...

  7. hdu 1809 求SG函数

    A New Tetris Game(2) Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. HDU 5742 Chess SG函数博弈

    Chess Problem Description   Alice and Bob are playing a special chess game on an n × 20 chessboard. ...

  9. Alice and Bob HDU - 4111 (SG函数)

    Alice and Bob are very smart guys and they like to play all kinds of games in their spare time. The ...

随机推荐

  1. [百度空间] [原]DLL导出实例化的模板类

    因为模板是在编译的时候根据模板参数实例化的,实例化之后就像一个普通的类(函数),这样才有对应的二进制代码;否则,没有模板参数,那么编译器就不知道怎么生成代码,所以生成的DLL就没有办法导出模板了.但是 ...

  2. STMPClient 发送邮件显示 不允许使用邮件名称.

      在.net 2.0,3.5, 针对某些邮箱(还不清楚是什么样的邮件) , 使用微软自带的DLL发送邮件会提示不允许使用邮件名称 .... 使用Jmail可以发送.     解决方案:     1. ...

  3. PowerDesigner(九)-模型文档编辑器(生成项目文档)(转)

    模型文档编辑器 PowerDesigner的模型文档(Model  Report)是基于模型的,面向项目的概览文档,提供了灵活,丰富的模型文档编辑界面,实现了设计,修改和输出模型文档的全过程. 模型文 ...

  4. Android 添加Button事件

    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV ...

  5. docker-py的配置与使用

    测试环境 75机:Red Hat Enterprise Linux Server 7.0,无外网访问权限 73机:Red Hat Enterprise Linux Server 7.0,无外网访问权限 ...

  6. leetcode single number系列

    这个系列一共有三题,第一题是一组数里除了一个数出现一次之外,其他数都是成对出现,求这个数. 第二题是一组数里除了两个数出现一次外,其他数都是成对出现,求这两个数 第三题是一组数里除了一个数出现一次外, ...

  7. delphi 网络函数

    Delphi网络函数 unit net; interfaceusessysutils,windows,dialogs,winsock,classes,comobj,wininet; //得到本机的局域 ...

  8. root 授权

    错误:The user specified as a definer ('root'@'%') does not exist 解决: grant all privileges on *.* to ro ...

  9. UVA 10574 - Counting Rectangles 计数

    Given n points on the XY plane, count how many regular rectangles are formed. A rectangle is regular ...

  10. iOS iPhone iPad 各种控件默认高度

    iPhone iPad 各种控件默认高度 注意:这些是ios7之前的,ios7之后(包括ios7)有改动,我会在后面标注出来 iPhone和iPad下各种常见控件的宽度和标准是一样的,所以这里就用iP ...