B - Simple Game Time

本文介绍了一个简单的博弈游戏,玩家需选择一个1到n之间的整数,与对手及随机数进行比距,目标是找到最有可能获胜的数值。文章提供了问题背景、解决思路及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

B - Simple Game Time (2016-05-06 23:01:29)
B - Simple Game Time
 Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Submit Status Description One day Misha and Andrew were playing a very simple game. First, each player chooses an integer in the range from 1 to n. Let's assume that Misha chose number m, and Andrew chose number a. Then, by using a random generator they choose a random integer c in the range between 1 and n (any integer from 1 to n is chosen with the same probability), after which the winner is the player, whose number was closer to c. The boys agreed that if m and a are located on the same distance from c, Misha wins. Andrew wants to win very much, so he asks you to help him. You know the number selected by Misha, and number n. You need to determine which value of a Andrew must choose, so that the probability of his victory is the highest possible. More formally, you need to find such integer a (1 ≤ a ≤ n), that the probability that is maximal, where c is the equiprobably chosen integer from 1 to n (inclusive). Input The first line contains two integers n and m (1 ≤ m ≤ n ≤ 109) — the range of numbers in the game, and the number selected by Misha respectively. Output Print a single number — such value a, that probability that Andrew wins is the highest. If there are multiple such values, print the minimum of them. Sample Input
 
Input
3 1
Output
2
 
Input
4 3
Output
2
解释:
 Hint In the first sample test: Andrew wins if c is equal to 2 or 3. The probability that Andrew wins is 2 / 3. If Andrew chooses a = 3, the probability of winning will be 1 / 3. If a = 1, the probability of winning is 0. In the second sample test: Andrew wins if c is equal to 1 and 2. The probability that Andrew wins is 1 / 2. For other choices of a the probability of winning is less.
 
这个题的大意是给你N个数(1到N)让你挑个数a,让对手挑个数m,一个随机的机器挑个数C(1到N的几率相等)看谁的C的距离近谁赢,如果距离相等,那你就输。让你找到你赢最大几率的一个数a。。。。
 
题解:
这个题一上来就要有自己的思路:你要争取你能得到最大的利益,而这个数a又不能与m相等。。。。
那么说你只能挑一个m+1和m-1这两个数。。。不要问我为什么。。你想想是不是这样你能得到最大赢得几率。。
那回头说来你要怎么判断如何选择m+1和m-1这两个数呢?想想。。。。
啊!只要比较n-m与m的值的大小就可以了啊!!是不是??
 
我这摸做会有坑,,(自己挖的),那么n=1,m=1时又是什么呢?那必是a=1啦,(虽然你必输),
 
那么说代码如下:
 
#include
 int main()
{
long long n,m;
 scanf("%lld %lld",&n,&m);
 if(n-m >= m)                 //判断用m+1还是m-1
printf("%lld\n",m+1);
if(n == 1&&m == 1)             //1  1的判别
 printf("1\n");
else if(n == 2&&m == 1)         //2   1的判别
printf("2\n");
else printf("%lld\n",m-1);
return 0;
}
 
 
 
代码菜鸟,如有错误,请多批评!!B <wbr>- <wbr>Simple <wbr>Game <wbr>Time
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值