首页 > 其他分享 >Educational Codeforces Round 136 C. Card Game

Educational Codeforces Round 136 C. Card Game

时间:2022-10-01 14:00:31浏览次数:54  
标签:Educational Codeforces up down define Game ans 平局 mod

题意:有1-n的一个排列,其中n是偶数,A和B两个人拿这副牌玩游戏,两个人绝顶聪明。A拿一半牌,B拿一半牌。规则很简单,A先手出牌,如果B有比他大的牌,那出一张比他大的牌,这一轮结束,下一轮B先手出牌,规则同上。当某一方没有比对方大的牌时输掉。如果两个人牌都出完了也没有分出胜负,那么算平局。求所有发牌可能中A赢的次数,B赢的次数和平局次数,答案模998244353.

解:观察一下样例发现平局始终是1,想想很合理,那么先假设平局的确是1(。显然当A拿到最大的牌时他已经赢了,那么考虑B拿到最大牌的情景。

  • B拿到了最大的牌,那么A就要想办法把他最大的牌钓出来,不然下一局B先手,A就寄了。
  • 显然拿n-1钓最合适。如果A没有n-1,那么就是B有n-1,不管A出什么,B都可以出n-1,然后再出n,赢下这把。
  • 如果A有n-1,那么n和n-1都出掉,A并没有损失。
  • 当然也可以说:假设A有n-2,那A拿n-2钓n,留着n-1,但下一局留着n-2和留着n-1有什么区别呢,所以还是把n-1出掉吧。
  • 故可以画出这张图,其中An表示A有n这张牌:
   
  • 推一下组合数公式,可得:

   

  • 以及由图得,平局的确只有一种可能。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxx 200005
#define inf 1000000009;
#define mod 998244353
ll c[65][65]={0};
void init(){
    for(int i=0;i<62;i++){
        for(int j=0;j<=i;j++){
            if(!j)
                c[i][j]=1;
            else{
                c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
            }
        }
    }
}
signed main(){
    init();
    int T;
    cin>>T;
    while(T--){
        int n;
        scanf("%d",&n);
        ll ans=0;
        int up=3,down=4;
        while(n>down){
            ans=(ans+c[n-down][n/2-up])%mod;
            if(n>down+1)
                ans=(ans+c[n-down-1][n/2-up])%mod;
            down+=4,up+=2;
        }
        ans=(ans+c[n-1][n/2-1])%mod;
        printf("%lld %lld 1\n",ans, (c[n][n/2]+mod-ans-1)%mod);
    }
    return 0;
}
View Code

 

标签:Educational,Codeforces,up,down,define,Game,ans,平局,mod
From: https://www.cnblogs.com/capterlliar/p/16747136.html

相关文章

  • Codeforces Global Round 22 C
    https://codeforces.com/contest/1738/problem/C题意给你n堆石子,alice和bob轮流拿其中的一堆,alice先手,如果alice拿到石子数量之和为偶数就赢,否则bob赢,二人都......
  • Educational Codeforces Round 136 (Rated for Div. 2) E. Cleaning Robot
    EducationalCodeforcesRound136(RatedforDiv.2) E.CleaningRobotProblem-E-Codeforces题意:有一个二行n列的网格,有一些网格是脏的,扫地机器人起点在(1,1)......
  • Game on Tree 3
    ProblemStatementThereisarootedtreewith$N$vertices,Vertex$1$beingtheroot.Foreach$i=1,2,\ldots,N-1$,the$i$-thedgeconnectsVertex$u_i$......
  • Codeforces Round #643 (Div. 2) ABD
    这套题目也太顶了,强推A-SequencewithDigitshttps://codeforces.com/contest/1355/problem/A题目大意:给定一个初始数值n,问我们在每次都加上这个数字的数位最大值*......
  • Educational Codeforces Round 136 C-D
    D.ResetKEdges显然对于每个k每个答案具有单调性我们考虑二分一个能保留的最大长度x然后我们自上至下肯定不好操作我们考虑自下而上对于每次到达了我们最大长度x......
  • Codeforces Round #822 (Div. 2)
    Preface这场间隔有点久了,ABC是上周日打的,DE是这周四写的感觉这场难度海星,比DE都不会的823友好多了A.SelectThreeSticks容易发现最终变成的长度一定是已经存在的,因......
  • *Codeforces Round #235 (Div. 2) C. Team(贪心)
    https://codeforces.com/contest/401/problem/C题目大意:给定n个0,m个1;让我们构建出一个字符串满足:不能连续2个以上的0,不能出现3个连续的1;可以的话就输出任意正确的结......
  • Codeforces Round #823 (Div. 2)
    B.MeetingontheLine题意:有n个人,第i个人的坐标是xi,从xi移动到yi要花|xi -yi|的时间。除此之外,他还需要ti 的时间打扮。试求一点使得所有人到这里所花时间的最大......
  • Educational Codeforces Round 135 (Rated for Div. 2) - E. Red-Black Pepper
    exgcdProblem-E-Codeforces题意给\(n\;(n<=3*10^5)\)个菜,每个菜可以加红辣椒或黑辣椒,分别可以获得\(c[i],d[i]\)分;有\(m\;(m<=3*10^5)\)个商店,第i个商店包......
  • Codeforces Round #240 (Div. 1) B. Mashmokh and ACM(DP)
    https://codeforces.com/contest/414/problem/B题目大意:给定一个范围【1,k】,要求我们从这里面选出n个数字,并且满足任意两个相邻数字中后一个数字%前一个数字==0问我......