炉石传说吧 关注:5,354,280贴子:109,241,908
  • 12回复贴,共1

贴吧内自称数学和编程大神的进来,奇迹德问题

只看楼主收藏回复

转帖自hihocoder, 实现一个计算奇迹德1费OTK概率的程序:
你在玩炉石传说, 你组了一套卡牌。
拍卖师(auctioneer),随从,花费5个水晶,每释放一个法术摸一张牌。多个拍卖师同时在场上时抽牌效果可以叠加。
激活(innervate),法术,花费0个水晶,获取2个水晶。但是总水晶数目不能超过maxCrystal.
爪击(claw),法术,花费1个水晶,为英雄增加两点攻击,两点护甲。
硬币(coin),法术,花费0个水晶,获取1个水晶。但是总水晶数目不能超过maxCrystal.
然后你可以打出,拍卖师 激活 爪机 硬币,当你的总攻击超过HP的时候,你便可以击杀对方。
但是注意,场上至多同时放置7个随从。
如果当前你的牌组已经空了,但是还试图摸牌,你会受到疲劳(fatigue)惩罚。
第i次试图摸牌受到i点伤害,即如果再没有牌之后试图摸i张牌时,你一共会受到i(i + 1) / 2点伤害,当惩罚超过了HP + 护甲,你会立刻死亡。
刚开始你有1颗水晶;你的英雄和对手各有HP点生命值;你可以摸4张牌。
你可以选择其中你不想要的牌,把他们加入牌组洗牌,再抽取等量的牌(也就是说你有可能抽到放进去的牌)。
然后你摸去一张牌和一个硬币。
你可以认为牌组是均匀洗牌的。
然后问你这回合可以击杀对手(OTK, one turn kill)的概率是多少,即你的攻击力超过了对方的HP。
你的手牌上限是maxHand,当达到手牌上限之后,如果你再试图抽牌,牌会直接弃掉。
你的水晶上限是maxCrystal,当你达到水晶上限时候,再使用激活和硬币不会增加水晶。
如果你玩过炉石,注意这里并没有英雄技能变形。
Input
六个整数,分别表示拍卖师个数,激活个数,爪击个数,生命值,水晶上限,手牌上限。
总牌数小于34,生命值10到30,水晶上限和手牌上限都是5到15 。
Output
OTK概率。与标准答案误差在1e-5以内就算正确。
Sample Input 2 13 15 30 10 10
Sample Output 0.241662


1楼2016-05-23 12:07回复
    七分钟惨案


    IP属地:山东来自iPhone客户端2楼2016-05-23 12:15
    回复
      2025-11-30 12:21:47
      广告
      不感兴趣
      开通SVIP免广告
      楼主是搞acm的吧。。。


      IP属地:浙江来自iPhone客户端5楼2016-05-23 23:43
      回复
        不知道用概率dp是否可行


        IP属地:浙江来自iPhone客户端6楼2016-05-23 23:47
        回复
          现在acm的题目好多都用到了炉石


          IP属地:湖北7楼2016-06-06 14:55
          回复
            最近都没时间过新题呢……MARK一下,闲下来的时候来看两眼好了。目测构建难度挺大的,拿来杀时间大概不坏。
            ——dspzzy


            IP属地:广东8楼2016-06-06 15:52
            回复
              回家模拟一下试试,留


              来自iPhone客户端10楼2016-06-06 16:21
              回复
                楼上好多大神的样子


                IP属地:北京来自Android客户端11楼2016-06-06 17:24
                回复