2021EC-final博弈论E题Prof. Pang and Poker
题目链接:Problem - E - Codeforces
题目意思:有三个人玩游戏,Alice,Bob,还有Prof. Pang。Alice和Bob分别有n,m张扑克,Pang只有一张,出牌顺序是Alice,Bob,Pang,Alice。类似斗地主一样的规则,但是不同的是,每次只能出一张牌。Alice想要Pang出完手里的牌(送牌让他走),Bob想要阻止。当且仅当Pang出完手里的唯一的牌,他会开心。
我们可以得知题目的规则类似斗地主,假设我们是Alice,那么我们就要想办法送牌给Pang,让Pang走完手中的牌,又或者通过一些手段,让Bob出牌,送给Pang。
对于博弈论的题,我们可以先分析,哪些情况是必胜的(这里我定义Alice必定能让Pang出完手里的牌是必胜的)。遇到这样的题目,我们不能一上来就凭感觉狂写一通,不能想到什么就写什么,因为这样很容易漏掉条件,我们最好按照某种特定的条件,不断分类,让自己所分类的条件,可以涵盖所有的可能情况。
首先,如果你是Alice,你想要Pang走完自己的牌。我们可以先看两个大前提的条件。
那么如果Alice的牌数n = 1,必输。因为Alice先手,走完这张牌,游戏就结束了
如果Alice所有的牌,都 >= Pang的牌,必输。因为你出的牌,Pang根本要不起,那么Bob就可以一直不接你的牌,直到你把自己的牌走完,游戏结束。
除此之外有一点很好发现的特点,那就是,带入Bob,如果Bob手里小于Pang的牌很多,那么Bob就没办法走完全部的牌,如果平时玩过斗地主,这个特点非常容易发现。
那么,我们就可以对Bob手里小于Pang的牌的数量进行分类。我们假设,Bob手里小于Pang的牌的个数为x。那么:
若x>=2,Bob必输。
因为,在除去之前的两个Alice必败条件,Alice至少有两张牌,而且至少一张小于Pang的牌。那么Alice只需要开局打出小于Pang的那张牌。如果Bob不压我们,Pang就会打出自己的牌,我们赢。所以Bob必须要压我们,但如果他压了我们,我们可以选择不出牌,后面无论Bob出什么,我们都不要,让Bob一直出牌,直到Bob打出了一张小于pang的牌,我们胜利。所以综上,无论怎么样,如果Bob手里小于pang的牌至少有两张,那么我们必赢,bob必输。
若x=0,Bob必胜。
如果Bob手里的牌,都是大于等于pang的,那么我们出牌,只要是小于pang的牌,Bob就选择压我们,一直出,就一直压。到最后,要么Bob打完了手里所有的牌,要么Alice打完了所有能送pang赢的牌,所以,无论如何,都是Bob赢。
接下来,就剩最后一个大类了,也是最容易出错的一类。
当x=1的时候。
首先,我们先判断一个特殊情况:
如果Bob只有一张牌,且Alice的那张小牌 >= Bob手中的牌,Bob必输,否则Bob必胜。因为Alice只要出那张牌,Bob的牌出不了,也就是Bob不能跑完全部的牌,也就只能眼睁睁看着Alice的那张牌送到pang的手里,然后pang出牌,游戏结束。但如果Alice手里小于pang的那种牌,比Bob的手里的牌还小,那么Bob还是赢的,因为只要Alice出了那张牌,Bob会赶在pang能出牌之前,把自己手里唯一的牌打出去,游戏结束。
此后,我们再判断Alice手中的牌
若Alice < pang 的牌的数量 = 1,Bob必胜
因为只要Alice出手了这唯一一张能让pang赢的牌,那么Bob就可以压制Alice的那张牌,灭了他唯一的希望,此后,Bob就可以随意出,只要把小于pang的牌留到最后一手,然后走掉,结束游戏。那如果Alice选择接手,但这时候Alice手里的牌都是大于等于pang的,那么Alice又回到了最开始我们说的必输的局面。所以这种情况下,Bob怎么样都是赢的。
若Alice < pang 的牌的数量 >= 2:
如果Alice最大的牌 > Bob最大的牌,并且Alice存在一张牌 < pang 并且 >= Bob手中的小牌,同时Alice的牌还要多余3张,Bob必输 ,否则Bob必胜。因为Alice只要出一张最小的牌,Bob必须阻拦 ,之后Alice一直不接牌,让Bob一直出牌,直到Bob剩下出完倒数第二张牌,也就是最后一个 > pang的牌,这时候Alice再出手,压住Bob,然后再出一张Bob要不起,但是pang要得起的小牌,让pang赢。之所以Alice的牌要 > 3张,是因为除去开局出的小牌,手里最大的牌,以及之后送给pang的牌,还要有多余的牌在手里,不然的话,打出送给pang的牌,自己手里没牌,游戏就结束了(这点很容易错)
最后附上AC代码
#include<bits/stdc++.h>
#define ll int
#define LL long long
#define L(i,j,k) for(ll i=j;i<=k;++i)
#define R(i,j,k) for(ll i=j;i>=k;--i)
using namespace std;
const ll N=5e3+10,mod=1e9+7;ll n,m,k,p,t,x,y,z,c;
LL ans;
ll a[60],b[60];
char sa[60][5],sb[60][5],sc[5];ll cal(char ch){if(ch=='A')return 14;else if(ch=='K')return 13;else if(ch=='Q')return 12;else if(ch=='J')return 11;else if(ch=='T')return 10;else return (ch-'0');
}void solve(){scanf("%d%d",&n,&m);L(i,1,n)scanf("%s",sa[i]),a[i]=cal(sa[i][0]);L(i,1,m)scanf("%s",sb[i]),b[i]=cal(sb[i][0]);sort(a+1,a+n+1);sort(b+1,b+m+1);scanf("%s",sc);c=cal(sc[0]);int am,bm,amax,bmax;am=bm=amax=bmax=0;int a_maxmin=0;int ada=0;for(int i=1;i<=m;i++) //求出bob小于c的个数{if(b[i]<c){bm++;}}for(int i=1;i<=n;i++) //alice大于等于c的个数{if(a[i]>=c){ada++;}else{if(a[i]>a_maxmin) //最大的小于C的数字{a_maxmin=a[i];}}}int flag=1;if(n==1||ada==n){printf("Shou\n");return ;}if(bm>=2){printf("Pang\n");return;}else if(bm==0){printf("Shou\n");return ;}else{if(m==1) //B大为0 也就是没有大于等于c的牌{if(a_maxmin>=b[1]) ///存在大于等于m且 小于C{printf("Pang\n");return ;}else{printf("Shou\n");return ;}}if((n-ada)==1) //a小为1{printf("Shou\n"); return ;}else ///A小大于等于2个{if(b[m]>=a[n]) //有牌权{printf("Shou\n");return ;}else{if(a_maxmin>=b[1]&&n>3){printf("Pang\n");}else{printf("Shou\n");}}}}
}int main(){ll cas=1;scanf("%d",&cas);while(cas--)solve();
}
2021EC-final博弈论E题Prof. Pang and Poker相关推荐
- 博弈论分析题_微观经原笔记(四)一些关于博弈论的习题
这学期学的经济学原理可以简单地分为三部分. 第一部分是引入市场中讨论的一些概念,例如剩余.弹性.政策.外部性. 第二部分是讨论消费者行为.讨论的内容如约束.效用.决策.禀赋,以及衍生结论. 第三部分是 ...
- 博弈论分析题_博弈论练习题答案 张照贵
二.博弈论与经济学的关系是什么?经济学的变化趋势是什么? 答: ( 1 )博弈论与经济学的关系: 1 .博弈论在经济学中的应用最广泛.最成功. 2 .经济学家对博弈论的贡献越来越大. 3 .经济学和博 ...
- Acwing 236. 格鲁吉亚和鲍勃(博弈论妙题)
Acwing 236. 格鲁吉亚和鲍勃 题意: 一排网格,将网格从左到右依次编号 1,2,3,-,并将 N 个西洋棋棋子放在不同的网格上,如下图所示: 两个人轮流移动棋子 每次玩家选择一个棋子,并将其 ...
- [The 2019 ICPC Asia-East Continent Final]Coda的题解集
2019年12月,第一次参加正式比赛,也是第一次打铁. 个人水平不够,缓更. Codeforces - 2019 Asia EC-Final A. City 唯一的签到题,也是队伍唯一AC的题. 题目 ...
- FZU-2230 翻翻棋(博弈论,规律题)
象棋翻翻棋(暗棋)中双方在4*8的格子中交战,有时候最后会只剩下帅和将.根据暗棋的规则,棋子只能上下左右移动,且相同的级别下,主动移动到地方棋子方将吃掉对方的棋子.将和帅为同一级别.然而胜负在只剩下帅 ...
- 博弈论分析题_博弈论复习题及答案
囚徒困境说明个人的理性选择不一定是集体的理性选择. (√ ) 子博弈精炼纳什均衡不是一个纳什均衡. (× ) 若一个博弈出现了皆大欢喜的结局,说明该博弈是一个合作的正和博弈. ( ) 博弈中知道越多的 ...
- 博弈论分析题_博弈论复习题及答案分析
混合策略存在一个 (1)此博弈的收益矩阵如下表.该博弈是零和博弈,无纳什均衡. John 2 3 1 3,-3 -1,1 -1,1 2 -1,1 3,-3 -1,1 -1,1 -1,1 3,-3 2) ...
- 【博弈论/思维题】人人尽说江南好
选自HEOI2014 BZOJ 3609: [Heoi2014]人人尽说江南好 因为游戏规定,首先无法合并的一方判输, 每人都会使用最优策略, 那么贪心的想, 最优合并方案最后石子排布情况一定为m, ...
- (博弈论)一行代码就能解决的智力题
(博弈论)一行代码就能解决的智力题 我在闲暇时逛微信公众号,发现了三道类似于博弈论的题,这三道题来自LeetCode ,我认为非常有趣,于是贴在我的博客里,以下是这位大佬的链接地址,大家对算法感兴趣的 ...
最新文章
- C# 判断字符串是否符合十六进制,八进制,二进制和十进制整数格式的正则表达式...
- [国际A类会议] 2018最最最顶级的人工智能国际峰会汇总!CCF推荐!
- 一场开源数据库的精酿啤酒节,会有多少种味道?
- list indices must be integers or slices, not tuple
- 通信网络基础期末复习-第一章和第二章-概论和端到端的传输协议
- 薛定谔的流量杠杆,网红电商上市的激励与诅咒
- linux下如何产生core,调试core
- 使用Lambda 表达式注册Bean
- RocketMQ Filtersrv
- Windows 64位下安装Redis超详细教程
- Docker 安装 Redis 并配置 Docker 方式的 phpRedisAdmin
- Unity 按钮脚本
- C# - 获取工程里资源(图片、图标等)
- ui界面设计工具有哪些
- 每日牛客网-2022/1/4 错题解析
- CMOS相机和CCD相机的区别
- 正则环视 php,正则高级环视
- 米的换算单位和公式_请问米和毫米之间的单位是怎么换算的?
- 生化危机绝密报告2java,生化危机 绝密任务V2.1
- 小程序跳转到另一个小程序很慢很卡