zoukankan      html  css  js  c++  java
  • 【hdu2149】Public Sale

    其实这道题本质上也是取石子问题,那么我们还是可以用博弈论来解决。

    首先还是特判,若(n>=m)直接输出从n到m的所有整数即可。

    然后作进一步分析,可以看到如果目前的竞价是m-(n+1),也就是说离m还有n+1的距离,那么此时轮到竞拍的人必输,所以要尽量给对手这样的点。

    同样的,当i*(n+1)<m<(i+1)*(n+1)时,轮到竞价的人必定能赢得竞拍,此时第一次出价也仅有一种出价方法,即出价(m-i*(n+1));而当存在i*(n+1)== m时,必败,输出none。

    其实代码和取石子问题差不多:

    #include<cstdio>
    int main()
    {
        int n,m;
        while(~scanf("%d %d",&m,&n))
        {
            if(n>=m)
            {
                for(int i=m;i<n;i++)
                printf("%d ",i);
                printf("%d
    ",n);
                continue;
            }
            for(int i=1;;i++)
            {
                if(i*(n+1)<m&&m<(i+1)*(n+1)){printf("%d
    ",m-i*(n+1));break;}
                else if(i*(n+1)==m){printf("none
    ");break;}
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    LeetCode 79
    LeetCode 437
    LeetCode 783
    LeetCode 59
    LeetCode 每日一题 04/24
    LeetCode 5
    LeetCode 43
    简易多线程任务 往数据库插数据
    定时任务--查数据库--注解实现
    redis 简易 实现
  • 原文地址:https://www.cnblogs.com/JKAI/p/6954138.html
Copyright © 2011-2022 走看看