UOJ #151. 【NOIP2015】斗地主“加强”版【搜索+贪心

博客内容讲述了作者重新思考和编写NOIP2015中斗地主问题的解题过程,强调了在解决此类问题时,由于不需要考虑牌的大小,暴力枚举顺子并记录单张、对子、三张、四张的出牌方式即可。通过递归数组`rec`记录每种组合的数量,然后通过DFS判断四带二和三带一的出牌方案,最终实现暴力枚举结合贪心策略得出答案。在多次尝试和错误中,作者逐步优化了算法,理解到正确的结算顺序对结果的影响。
摘要由CSDN通过智能技术生成

去年写了一遍,今天再写写试试233

当时是照着某beiyu大爷的代码人工ctrl+c,ctrl+v的233333,于是今年自己写一遍【毕竟每天考试都有暴搜/模拟题

…………忽然发现自己没有剪枝…………还是跑得特别快2333


考虑……因为只要把牌出完就行了,并不需要考虑大小,显然只要是单张/对子/三张/四张,不管点数,到最后结算和一边枚举一边算是等效的,于是只用暴力枚举一下顺子,其他的牌记录一下是怎么出的(单张?对子?三张?四张?)就好了,并不需要剪枝因为这个枚举的方案数足够少233333


单独开一个rec数组记录一下当前状态下有多少张牌是以单张/对子/三张/四张的方法出的


dfs(now)表示比now小的牌都已经出完了(如果是顺子就直接在数量上加加减减,如果是对子单张那种就直接++rec[x]。


最后算的时候显然四带二比三带一(三带二也是三带一的一种嘛)的要求多一些,于是先判四带二可以出多少,再判三带一能出多少,最后把剩下的加起来就好,基本就是暴力枚举+贪心地出牌直接更新答案


WA了好几次……

第一次:多组数据我只输出了一个答案2333

第二次:大小王init的时候用的15和16,计算的时候用的14和15

第三次:我这样写的话并不好剪枝,如果直接用顺子的数量加上rec的最优出法数量是要挂的,比如现在的rec[1]=1,rec[4]=1,最

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值