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

Public Sale

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11335    Accepted Submission(s): 6708

Problem Description

虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金。现在等待他的,就是像FarmJohn一样的农田生涯。

要种田得有田才行,Lele听说街上正在举行一场别开生面的拍卖会,拍卖的物品正好就是一块20亩的田地。于是,Lele带上他的全部积蓄,冲往拍卖会。

后来发现,整个拍卖会只有Lele和他的死对头Yueyue。

通过打听,Lele知道这场拍卖的规则是这样的:刚开始底价为0,两个人轮流开始加价,不过每次加价的幅度要在1~N之间,当价格大于或等于田地的成本价 M 时,主办方就把这块田地卖给这次叫价的人。

Lele和Yueyue虽然考试不行,但是对拍卖却十分精通,而且他们两个人都十分想得到这块田地。所以他们每次都是选对自己最有利的方式进行加价。

由于Lele字典序比Yueyue靠前,所以每次都是由Lele先开始加价,请问,第一次加价的时候,
Lele要出多少才能保证自己买得到这块地呢?

Input

本题目包含多组测试,请处理到文件结束(EOF)。每组测试占一行。
每组测试包含两个整数M和N(含义见题目描述,0<N,M<1100)

Output

对于每组数据,在一行里按递增的顺序输出Lele第一次可以加的价。两个数据之间用空格隔开。
如果Lele在第一次无论如何出价都无法买到这块土地,就输出"none"。

Sample Input

4 2

3 2

3 5

Sample Output

1

none

3 4 5

题目大意:给你一个成本价为M, 然后两个人按顺序叫价,但每次叫价增加的价格必须在(1~N)之间,最后谁报的的价先超过或等于M,谁就赢。两个人都很聪明,主角先叫价,问他第一次报价为多少时可以赢,如果能赢把他第一次报价的所有能赢的价格都输出来,如果没有赢的可能性就输出none。

解题思路:典型的博弈,如果对博弈一点都不了解,只是单纯找规律,做起来会很恼火。这道题就是巴什博奕,就相当于有M个物品,两个人轮流取,每次只能去(1~n)个。谁能先取完,谁就赢。这里有个公式M=(n+1)r+s,只要第一个人能取走s个,后手无论怎么取,比如k个(k<n)。那么先手只需要去(n+1-k)个。这样下去先手一定是第一个取完M的,这就是先手必胜,反之如果M与n+1取余为0,先手必败。这道题稍微又多了一点变化,n可以大于M,这种情况需要特判一下, 这也是先手必胜的情况只需要输出(M~N)就行了。输出所有能赢的价格就是保证你第一次报价后剩下的价格必须保证是(n+1)的倍数,就ok了,就这一点变化。

AC代码:

#include<cstdio>
int main()
{int m, n;while(~scanf("%d%d", &m, &n)) {if(m <= n){printf("%d", m);for(int i = m + 1; i <= n; ++i){printf(" %d", i);}printf("\n");continue;}int r = m % (n + 1);if(r == 0){printf("none\n");}else{int x = 0;for(int i = 1; i <= n; i++){if((m - i) % (n + 1) == 0){if(x == 0)printf("%d", i);elseprintf(" %d", i);x++;}}printf("\n");}}return 0;
}

HDU-2149(博弈)相关推荐

  1. hdu 2149 巴什博弈

    http://acm.hdu.edu.cn/showproblem.php?pid=2149 分析:就是巴什博弈的概念. 题目要求:对于每组数据,在一行里按递增的顺序输出Lele第一次可以加的价.两个 ...

  2. hdu 2149+hdu 1846(巴什博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2149 首先介绍一下巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每 ...

  3. HDU 2149 Public Sale (博弈)

    Public Sale Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  4. hdu 1847 博弈

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  5. HDU 2149 Public Sale

    Public Sale Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. HDU 4023 (博弈 贪心 模拟) Game

    如果硬要说这算是博弈题目的话,那这个博弈是不公平博弈(partizan games),因为双方面对同一个局面做出来的决策是不一样的. 我们平时做的博弈都是公平博弈(impartial games),所 ...

  7. 【HDU - 2149】Public Sale (巴什博奕)

    题干: 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯. 要种田得有田才行,Lele听说街上正在举行一场别开生面 ...

  8. hdu 1525 博弈

    欧几里德问题上的博弈,理解后不难. /* * hdu1525/win.cpp * Created on: 2011-11-11 * Author : ben*/#include <cstdio& ...

  9. HDU 5754 博弈(威佐夫博弈)

    这个题除了皇后的可以套用一下威佐夫博弈以外其他的都可以找规律找出来,主要为了学习一下威佐夫博弈, 威佐夫博弈:给两堆石子,每次都可以从其中一堆石子中取n个石子或者从两堆石子中都取n个石子,最后将石子取 ...

  10. HDU 2149.Public Sale-巴什博奕

    HDU2149: 代码: 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include&l ...

最新文章

  1. Activex、OLE、COM、OCX、DLL之间区别、联系
  2. angular select设置默认选中_技术分享 | Charset 和 Collat??ion 设置对 MySQL 性能的影响...
  3. 全局变量及其含义php,php Server:php超全局变量Server的含义与用法示例
  4. 最直白的跨域访问原理
  5. 【实践】多业务建模在美团搜索排序中的实践
  6. pytorch学习笔记(二十八):循环神经网络的从零开始实现
  7. 测试用例(功能用例)——人员管理、资产入库
  8. .NET银联支付开发(一):支付
  9. matlab求解指派问题最优解的函数
  10. 微信号下方菜单如何设置
  11. Handler消息机制之深入理解Message.obtain()
  12. 使用dns-over-https 手动测试域名解析
  13. Python生成n位随机数字字符串
  14. chrome driver 环境问题
  15. Python三方微博登录
  16. 递归实现20的阶乘(Java实现)
  17. 2022年超级品牌评估和排行榜研究报告
  18. 实战演练 Navicat 中英文模式切换
  19. Outlook 2019 中文邮件乱码的问题
  20. 单片机编程自己编写的一个很简单的传感器控制代码

热门文章

  1. Java StringBuffer的用法
  2. linux小波识别算法,人脸识别相关技术之小波变换
  3. 写文件 追加_总结Java中创建并写文件的5种方式
  4. 数据中心供电有多重要,看看这件事就知道了
  5. 动力专业节假日保障预案
  6. 机房六大安防系统常见故障原因及处理方法
  7. ae万能弹性表达式_外置常用ae插件 快速掌握AE软件的精髓
  8. python绘制如下图形、小三角形边长20_在编程中发现数学之美——使用Python小龟绘制多边形...
  9. 京瓷2010复印a4内容不全_京瓷2010复印机,纸卡定影的故障
  10. 成功解决ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any(