首页 > 其他分享 >CF1739 C. Card Game

CF1739 C. Card Game

时间:2022-10-05 16:34:48浏览次数:48  
标签:打出 号牌 然后 玩家 回合 CF1739 Game 如果 Card

题目链接

题意简述

有这样一个游戏 , 有一摞编号为 \(1\sim n\) 的卡片( 保证 \(n\) 为偶数),编号大的卡片比编号小的卡片更"强".
两名玩家玩这个游戏,他们平均分这 \(n\) 张卡片 ,即每个人有 \(n \over 2\)张卡片.这也就意味着一张牌只可能属于一个玩家.
每一个玩家的回合: 第一个玩家先出牌,然后下一个玩家出一张更强的牌. 如果一个玩家出牌后对手没有更大的牌,那么这个玩家就赢了. 一个玩家的回合结束后,轮到另一个玩家的回合. 如果某个回合结束后两个玩家都没有牌了,那么游戏平局.

给你牌的个数 \(n\) ,请分别计算出 玩家 \(A\) 赢, 玩家 \(B\) 赢,平局 的牌的分配方法数

样例

点击查看样例

分析

解法有很多,官方题解是 \(DP\) 或 组合数学(详见 \(Tutorial\) )

下面给出另一种解法(其实是没看懂官方题解)

注意,在一个玩家的回合结束后,另一个玩家的回合开始,这意味着: A打出牌后,B跟着打出,然后B再打出牌,A再跟着打出.

考虑 \(n\) 张牌的情境.
如果 \(A\) 拿 \(n\) 号牌, 那么 \(A\) 一定获胜.
下面只考虑 \(B\) 拿 \(n\) 号牌的情况

\[tips:事实上,\ A\ 必须首先打出一张比\ B\ 的手牌里除\ n\ 以外的牌都大的牌,把\ B\ 的\ n\ 号牌逼出来,否则:如果给\ B\ 机会先打了一张小牌,然后\ B\ 把\ n\ 打出来,那么\ A\ 就输了. \]

如果 \(B\) 拿 \(n\) 号牌
  如果 \(B\) 拿 \(n-1\) 号牌,那么无论 \(A\) 打出任何牌 , \(B\) 用 \(n\) 号牌响应,然后打出 \(n-1\) 号牌即可获胜.
  如果 \(A\) 拿 \(n-1\) 号牌,
    如果 \(B\) 拿 \(n-2\) 号牌 ,那么 \(B\) 赢了,因为①如果 \(A\) 打出 \(n-1\) 号牌时, \(B\) 使用 \(n\) 号牌,然后打出 \(n-2\) 号牌,然后 \(B\) ,获胜.②如果 \(A\) 打出其他牌, \(B\) 使用 \(n-2\) 号牌,然后打出 \(n\) 号牌即可获胜.
    如果 \(A\) 拿 \(n-2\) 号牌
      如果 \(B\) 拿 \(n-3\) 号牌 : \(A\) 先出 \(n-2\) 号牌把 \(B\) 的 \(n\) 号牌逼出,然后 \(B\) 出 \(n-3\) 号牌, \(A\) 用 \(n-1\) 号牌响应 .然后再轮到 \(A\) 出牌,注意,由于\(n-3 \sim n\) 的牌都用掉了,此时相当于从 \(n-4\) 的牌堆中出牌.
      如果 \(A\) 拿 \(n-3\) 号牌, \(B\) 输了 , \(A\) 先逼出 \(B\)的 \(n\) 号牌 ,然后 \(B\) 剩下的牌比 \(A\)所有牌都小. \(B\) 无论出哪张, \(A\) 都能响应,然后 \(A\)再出一张牌 ,\(B\) 就无法响应了.

\(B\) 拿 \(n-4\) 号牌\(:\) 首先 \(A\) 出 \(n-1\) 或 \(n-2\) 号牌(这是最优的出法,否则 \(A\) 必输) 然后 \(B\) 用 \(n\) 号牌响应,然后 \(B\) 出 \(n-4\)号牌,然后 \(A\) 可以出 \(n-3\) 或者 \(n-1\) 和\(n-2\)的其中一张(上次用完后剩下的那张).这样 \(B\) 就输了.

\(A\) 用 \(n-1\) 或 \(n-2\) 号牌响应(第一次没用的剩下的那张牌.).然后问题转化成了开始的情形(由于 \(n-3 \sim n\) 号牌都打掉了)

代码

标签:打出,号牌,然后,玩家,回合,CF1739,Game,如果,Card
From: https://www.cnblogs.com/oijueshi/p/cf1739c.html

相关文章

  • CodeForces 1527E Partition Game
    洛谷传送门CF传送门考虑朴素dp:设\(f_{i,j}\)表示分了\(j\)段且第\(j\)段的末尾是\(i\)的最小花费。有转移:\(f_{i,j}\gets\min\limits_{k=0}^{i-1}f_{k,j-1......
  • python pygame 迷宫生成
    importrandomimportsysimportpygame#使用pygame之前必须初始化pygame.init()#参数设置box_w,box_h=5,5#盒子宽高window_w,window_h=400,400x,y=0,0#盒......
  • python pygame 生命的游戏
    importsysimportpygameimportrandom#参数设置box_w,box_h=10,10#盒子宽高window_w,window_h=400,400x,y=0,0#使用pygame之前必须初始化pygame.init()#设......
  • Sept.25 Triangle Game
    portkey考场上因为读不懂题(再加上菜)就弃了所以先给一点翻译non-degenerate不-除掉|生成的不退化的non-degeneratetriangle不退化三角形,就是存在的三角形,满足三边\(......
  • 2018-2019 ACM-ICPC, Asia Seoul Regional Contest(CF GYM 101987) Problem K. TV Sho
    ProblemSolution设\(p_{i,R/B}\)为第\(i\)号节点染成R或B所代表的点。考虑2-SAT,对于每一个猜的操作,其中任意一个与猜的答案颜色不同,则其他两个必须相同。我们暴力进行......
  • POJ 2348 Euclid's Game(博弈论 辗转相减)
    POJ2348Euclid'sGame(博弈论辗转相减)题目:​ 给出两个数,A,B轮流操作。每次操作可以将大的数减去小的数的整数倍,若操作后出现0,执行这次操作的人胜。思路:​ 根据样例(25......
  • cf1739D
    题意每次可以选择树上的一条边fa,u,将此边断开,连到根1上面询问k次操作后,一棵树的最小深度想法初见,第一反应直接贪心取最深的那一条路上的中间边经过几组思考,发现答案具......
  • Educational Codeforces Round 136 C. Card Game
    题意:有1-n的一个排列,其中n是偶数,A和B两个人拿这副牌玩游戏,两个人绝顶聪明。A拿一半牌,B拿一半牌。规则很简单,A先手出牌,如果B有比他大的牌,那出一张比他大的牌,这一轮结束,下一......
  • Game on Tree 3
    ProblemStatementThereisarootedtreewith$N$vertices,Vertex$1$beingtheroot.Foreach$i=1,2,\ldots,N-1$,the$i$-thedgeconnectsVertex$u_i$......
  • ABC 244 C - Yamanote Line Game (交互题)
    https://atcoder.jp/contests/abc244/tasks/abc244_c题目大意:有两个人,分别叫做AB。给定一个数字,A先手,每个人可以从[1,2*n+1]这个范围内说出一个数字,说不出的人就输;我......