码迷,mamicode.com
首页 > 其他好文 > 详细

【hdu2149】Public Sale

时间:2017-06-07 00:43:10      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:lap   输出   view   can   play   cst   closed   hid   clu   

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

首先还是特判,若(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",n);
            continue;
        }
        for(int i=1;;i++)
        {
            if(i*(n+1)<m&&m<(i+1)*(n+1)){printf("%d\n",m-i*(n+1));break;}
            else if(i*(n+1)==m){printf("none\n");break;}
        }
    }
    return 0;
}
View Code

 

【hdu2149】Public Sale

标签:lap   输出   view   can   play   cst   closed   hid   clu   

原文地址:http://www.cnblogs.com/JKAI/p/6954138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!