B - Simple Game Time

来源:互联网 发布:淘宝店铺价格 编辑:程序博客网 时间:2024/05/21 03:26
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
0 0