博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Luogu P2482 [SDOI2010]猪国杀
阅读量:4457 次
发布时间:2019-06-08

本文共 1502 字,大约阅读时间需要 5 分钟。

这道题在模拟界地位不亚于在卡常界的地位了吧。

早上到机房开始写,中间因为有模拟赛一直到1点过才正式开始码。

一边膜拜CXR dalao一边写到3点左右,然后调啊调

最后发现杀死反猪抽的牌并没有被杀死它的人抽走(大雾),4点左右终于是写完了

看完题目(看都要10min)感觉这肯定不是什么建图跑XX算法或者套一个数据结构的题

然而数据范围也很默契,猪和牌的数量都不多,所以我们祭出被我们遗弃的暴力算法——模拟。

题目意思都不多说了,以下讲一下大致的思路:

  1. 每个猪应该有两个身份要记录。一个是真实身份,另一个是当前在游戏中目前的身份,即有可能是未知和类反猪
  2. 关于猪本身一些手牌,血量,有没有武器,下一头猪(因为可能有猪会死掉)等要记录的就不多说了
  3. 每个回合里分别便利当前猪的所有手牌并判断是否可以打出(没有目标自然是不能出的)
  4. 判断每个行动以及更新在此过程中可能会被更新的身份信息
  5. 无懈可击的情况要特别判断,写一个递归即可(实现看代码)

大致思路就是这样了,为了造福人类还是说一下这道题的坑点:

  1. 题目中描述反猪为AP,实际上是FP(看样例就知道了)
  2. 题目里说“数据保证牌的数量够用。”就是在扯淡。如果没牌要一直摸最后一张牌
  3. MP干掉ZP后武器也得弃了
  4. 无懈去无懈别人的无懈时要注意和原来的行为性质刚好相反(因为只有敌人会无懈你的无懈
  5. 一头猪在自己回合也会GG(决斗把自己玩死),同时在自己回合也可能摸牌(FP和你决斗然后它GG了)
  6. 除了桃之外的牌其他的牌在打出后都得重新扫描手牌(因为可能因为有武器使得之前的杀也可以用了,或者是由于一些猪身份的公开使得之前的一些牌有目标了)
  7. 只有MP会攻击类反猪,ZP是不会对类反猪表敌意的
  8. 放AOE技能时可能会一次干掉很多人,就会产生比如一回合摸许多牌的情况
  9. 同上,MP用AOE技能时要注意结算的顺序,尤其是杀了ZP又杀死FP会导致手上还有牌,而先杀死FP再杀ZP就一张牌都没有了
  10. MP所有FP死了游戏立即结束,意味着有牌摸的也不用摸了

大致就是这些了,还有强烈建议写的时候打点注释上去省的到时候自己都不知道自己在写什么心态爆炸

贴一下CODE(注释都是写的时候打上去的),如果要看超级详细的解析CODE的移步

CODE

#include
#include
#include
#include
#define RI register int#define GC(x) P[x].hand_cards[++P[x].tot]=getcard(); //x摸牌,太长了所以用下define using namespace std;const int M=2005;class FileInputOutput{ private: #define tc() (A==B&&(B=(A=Fin)+fread(Fin,1,S,stdin),A==B)?EOF:*A++) #define S 1<<21 char Fin[S],Fout[S],*A,*B; int Ftop; public: FileInputOutput() { A=B=Fin; } inline void pc(char ch) { Ftop

转载于:https://www.cnblogs.com/cjjsb/p/9850806.html

你可能感兴趣的文章
Django使用cors解决跨域问题
查看>>
jQuery Ajax 实例 ($.ajax、$.post、$.get)
查看>>
javascript禁用button:原生方式和jQuery方式
查看>>
Java中的垃圾回收机制
查看>>
UOJ#201. 【CTSC2016】单调上升路径 构造
查看>>
C语言第三次作业
查看>>
javascript系列之DOM(二)
查看>>
awk使用
查看>>
函数放到onload里面,在html里面执行函数会报错-----作用域和闭包相关问题
查看>>
自学html--one(div布局)
查看>>
LCM ADN GCD
查看>>
C++之编译器与链接器工作原理
查看>>
Bootstrap: 样式CSS:carousel轮换 图片的使用
查看>>
new和new[]的区别
查看>>
读书笔记之《高效人士的七个习惯》
查看>>
VS2017 IIS 部署.net core web项目
查看>>
java虚拟机学习(一)
查看>>
Ubuntu部署jmeter
查看>>
P1064 金明的预算方案
查看>>
一文告诉你git如何使用
查看>>