hdu2177

原创 2013年12月05日 16:38:52
#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;

#define oo (~0U >> 1)
#define MAXN 1000 + 10

int temp[MAXN];
int node[MAXN];
int as[1000 * MAXN][2];

void input()
{
    int a, b;

    for (int i = 0; i < 1000000 + 10; i++)
    {
        as[i][0] = (int)(2 * i / (sqrt((double)5) - 1));
        as[i][1] = as[i][0] + i;
    }

    while (cin >> a >> b, a + b)
    {
        if (a > b)
        {
            int t = a;
            a = b;
            b = t;
        }

        int k = (b - a);

        if (a == (int)(2 * k / (sqrt((double)5) - 1)))
        {
            cout << 0 << endl;
        }
        else
        {
            cout << 1 << endl;

            if (a == b)
            {
                cout << "0 0" << endl;
            }
            else
            {
                int ak = (int)(2 * k / (sqrt((double)5) - 1)), bk = ak + k;

                if (a >= ak && b >= bk && (a - ak) == (b - bk))
                {
                    cout << ak << ' ' << bk << endl;
                }

                for (int i = 0; i <= a; i++)
                {
                    if (a == as[i][0])
                    {
                        cout << as[i][0] << ' ' << as[i][1] << endl;
                        break;
                    }
                    else if (a == as[i][1])
                    {
                        cout << as[i][0] << ' ' << as[i][1] << endl;
                        break;
                    }
                }
            }
        }
    }
}

int main()
{
    input();
    return 0;
}

ACM-威佐夫博弈之取(2堆)石子游戏——hdu2177

ACM 威佐夫博弈 取(2堆)石子游戏 hdu2177 hdu1527进阶
  • lx417147512
  • lx417147512
  • 2014年05月02日 13:15
  • 2355

hdu 2177 取(2堆)石子游戏 (博弈)

题意:有两堆石子,两人轮流取石子,轮到某人时,有两种取法,要么从两堆石子中同时取出一定数量的石子,要么只从一堆中取任意数量的石子,不能不取。不能取的人判为输。 普通思想:对于博弈问题,首先想到的就是s...
  • ljd4305
  • ljd4305
  • 2013年09月29日 16:55
  • 2086

HDU2177——取(2堆)石子游戏(威佐夫博弈)

题目链接        这道题是HDU1527的升级版,题意都好懂,是威佐夫博弈的一道模板题,如果不是很了解威佐夫博弈,可以看一看我写的HDU1527的博客,我大致陈述了威佐夫博弈的一些基本知识...
  • Jason_crawford
  • Jason_crawford
  • 2016年08月05日 19:58
  • 456

hdu2177 取(2堆)石子游戏----威佐夫博弈,输出第一步最优策略

取(2堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota...
  • qiqijianglu
  • qiqijianglu
  • 2012年08月29日 19:52
  • 1558

hdu2177

#include #include #include using namespace std; #define oo (~0U >> 1) #define MAXN 1000 + 10 i...
  • u011676717
  • u011676717
  • 2013年12月05日 16:38
  • 368

hdu2177威佐夫博弈

这题由于数据水1a掉了,我的代码只对大的一堆进行操作也能ac,事实上应该将对小的操作情况也考虑进去,但是题目没有给出输出顺序。 思路:先用黄金分割乘以差值与小堆进行判段,若相等,为奇异局势,直接输出...
  • amourjun
  • amourjun
  • 2013年04月26日 10:20
  • 846

hdu2177威佐夫博弈

其实就是分析一下威佐夫博弈的原理, 先设小的数量的一堆是a,大的数量的一堆是b 如果(b-a)*(sqrt(5)+1)/2等于小的值,那么就可以保证后手赢 那么分析先手赢的原理便是先手拿了一次后...
  • zhubing0331
  • zhubing0331
  • 2017年06月24日 19:25
  • 161

Wythoff Game(hdu2177)

对于某个局势(a,b)  ,b>=a 差值k=b-a 对于某个确定的k 有唯一的奇异局势(必败点) (a_k,b_k)   其中a_k=k*(1+sqrt(5))/2        b_k=...
  • dellaserss
  • dellaserss
  • 2012年09月15日 15:07
  • 777

hdu 2177 取(2堆)石子游戏

#include #include #include #include using namespace std; int n,m; int k; double x = (1+sqrt(5.0))/2...
  • u013147615
  • u013147615
  • 2014年05月07日 22:54
  • 416

hdu 2177 取(2堆)石子游戏

天资愚笨啊,网上的一大堆没看懂。。。。。。 总结百科的方法为: 1.a==b 同时减去a 得到0,0 2.a==a_k      b>b_k b -(b-b_k) ...
  • lihaogegehuting
  • lihaogegehuting
  • 2014年08月11日 23:46
  • 769
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu2177
举报原因:
原因补充:

(最多只允许输入30个字)