2019华工校赛 F.翻牌游戏

博客详细分析了2019年华工校赛中F题——翻牌游戏的解题思路。博主指出比赛中常见的错误,并解释了正确解题时状态设计的重要性,特别是期望步数应从终点逆推至起点。博主介绍了两种策略,分别对应不同的翻牌情况,并给出了状态转移方程。最后,博主比较了自己的解决方案与标准解法的效率差异。
摘要由CSDN通过智能技术生成

https://ac.nowcoder.com/acm/contest/625/F
在这里插入图片描述
题意:有n个对子排,共 2 ∗ n 2*n 2n张,按照题目描述方法,选定最佳策略,求消除所有牌的期望轮数。
思路:
先说一下我在比赛时的错误,算是很经典的错误了吧。
我设 f ( i , j ) : f(i,j): f(i,j):已经消除i对牌,已经记住j张孤立的牌的位置,达到这个状态的期望轮数。然后按照概率转移。
画个图就知道错在哪里了。
1,2,3,4描述状态,边上是走的概率

按照我的方法,到达2的期望步数是1/3,3是2/3,4是 ( 1 3 + 1 ) + ( 2 3 + 1 ) = 3 (\frac{1}{3}+1)+(\frac{2}{3}+1)=3 (31+1)+(32+1)=3
这样是错误的。按照全期望公式:
在这里插入图片描述
Y是从u点到终点的期望,X是从u到终点的途径集合。
计算某一状态的期望,正确方法是考虑它转移到的状态的期望及其概率来计算它自己的期望。
回到上面的那张图,
应该设状态为 【 当 前 在 i , 走 到 终 点 期 望 还 需 要 几 步 】 , 然 后 逆 推 【当前在i,走到终点期望还需要几步】,然后逆推 i,而不是 【 当 前 在 i , 期 望 已 经 走 了 几 步 】 , 然 后 顺 推 【当前在i,期望已经走了几步】,然后顺推 i

这类问题的状态应该设计为【到达终点期望还需要多少步】,由终点推到起点

回到这个问题, f ( i , j ) : f(i,j): f(i,j):应该设计为:
1.已经消除i对牌,已经记住j张孤立的牌的位置还需要的期望轮数。
2.或者还需要消除i对牌,已经记住j张孤立的牌的位置,还需要的期望轮数。
这两种的正确性都是没问题的

比赛时还有一个重大错误是:猜。因为样例给的是策略1,然后就把策略1当作正确策略,事实上,这是不一定的,应该两个都算之后比较


按照std的设计方法:设 f ( n , m ) : 还 有 n 对 ( 两 个 位 置 都 不 知 道 ) 以 及 m 个 ( 有 一 个 不 知 道 位 置 ) 待 拼 成 , 还 需 要 的 期 望 轮 数 f(n,m):还有n对(两个位置都不知道)以及m个(有一个不知道位置)待拼成,还需要的期望轮数 f(n,m):n()m()
那么,令 h d = 2 ∗ n + m ( 未 知 位 置 个 数 ) hd=2*n+m(未知位置个数) hd=2n+m()
策略1:本次翻一个已知位置一个未知位置(下面的已知未知说的是这种牌有没有翻出来(记住)过)
f ( n , m )

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值