Codeforces 570B Simple Game 概率求解,简单数学思维

博客探讨了Codeforces 570B问题的解决方案,玩家a如何在已知玩家b选择的数m的情况下,选择一个数以最大化获胜概率。文章指出,当m偏向1时,a应选m+1,偏向n时选m-1。然而,若范围仅包含1且b选1,a必输,这是易错点。博客提醒读者不要理所当然,理解题目要求的是最大可能获胜概率,即使概率为0也是正确答案。
摘要由CSDN通过智能技术生成

题目描述了这么一个情景,给定一个范围 1~n ,两个人(简记为 a和b)各自随机选一个整数,然后再在1~n这个范围内随机找一个整数(1~n所有整数被选到的概率是相等的),这两个人谁选择的数更接近这个随机数谁就赢。

现在给出选数范围,给出其中一方(记做b)已经选好的数(记做m),问a应该选哪个数,才能使得a获胜的几率尽可能大?如果有不唯一的答案,就输出其最小值

画根数轴自己想象一下就明白了,如果b选好的数m更偏向1,那么a应该选m+1,如果更偏向n,a就应该选m-1,

然后就是有一个我觉得有问题的地方:当范围局限于1这一个数,然后b选的数也是1的时候,a是不可能赢得,因为这个时候a没得选只能也选1,然而题目中有约定,如果两人选的数字同随机数的距离相等,则判定b赢,也就是说这个情况下a必输

比赛时第一次提交代码的时候觉得这个地方是有争议不会出数据,结果,呵呵了,交上去先过了pretest,然后就被hack了,这场比赛有好多人凭借hack这个题就加了上千分。。这特么冤死啊。。

可以解释:题目只是让你输出成功概率“最大”的点,最大也可以是0啊,不输出才叫有问题。

莫想当然

By skyword, contest: Codeforces Round #316 (Div. 2), problem: (B) Simple Game, Accepted, #
#include<iostream>
#include<algorithm>
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值