请选择 进入手机版 | 继续访问电脑版

[luogu7147] [THUPC2021 初赛]麻将模拟器 - 大模拟 - dp

[复制链接]
盛夏丨光年丶 发表于 2020-12-31 19:00:03 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
传送门:https://www.luogu.com.cn/problem/P7147
写在前面

各人好我是泥萌可爱的出题人liuzhangfeiabc~
(别骂了我知道错了嘤嘤嘤)
说起来为什么会让我这个大一萌新来出这种题呢……喂这么毒瘤的题除了你还有谁会感兴趣
各人听我掩饰,哦不,解释,事情是这样的……最初他们组好题之后发现按往年惯例缺一道模拟,然后就找到了我
(为什么要找我啊?我也不想啊qwq)
为什么找你你自己心里还不清楚
总之接了这个活之后,按往年惯例一般大模拟会以一个游戏为配景(好比P5380 [THUPC2019]鸭棋),然后我就自然而然地想到去年整个机房被麻将支配的恐惊……
但是吧鉴于我的麻将水平也就那样,雀魂只有一个刚打上雀士1就弃了的号,也就委曲能分清日麻规则和国标规则的水平,于是造题的时候就很随心所欲(好比我题面里用的术语简直是七零八落大杂烩),到最后控制不住脑洞了又加了点特殊牌。当然最后出出来的效果是受到了出题组的一致好(tu)评(cao)(逃
行吧我们来看题解,当然作为大模拟我是不是只要写一个“本题按照题意模拟即可”就可以溜了……喂喂喂各人别走啊,喂!
接下来我们一个模块一个模块地看吧:
 
各种定义

  1. #define gc getchar()#define pc putchar#define pii pair#define fi first#define se second#define mp make_pairint pai[200],head = 1,fx = 1;struct player{        int a[20],sum;        bool pass;}p[4];
复制代码
布局体player定义一名玩家,此中a数组表现他现有的牌,sum为手牌数,pass记录他有没有被pass。
pai表现牌堆,head表现牌堆顶,fx表现游戏进行的顺序。
 
输入输出处置惩罚

我的处置惩罚方法是把输入进来的每一张牌酿成1~37的数字进行存储,输出的时候再还原成牌的名称。
输入处置惩罚就是一堆case:
[code]int i,j,l;string st;for(i = 1;i >st;    if(st[0] >= '1' && st[0]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )