#ZS3T4. 好玩的棋牌(cbhcard)

好玩的棋牌(cbhcard)

题目背景

​ “4连王炸”。话音刚落,生管就进来收走了牌,并且通报了全宿舍。但是 ptezptez 的宿舍生活没有棋牌怎么可以呢?所以经过全宿舍的共同努力,一个超级缝合怪棋牌诞生了,我们将其命名为好玩的棋牌,简称 cbhcardcbhcard (没有抄袭 NOIP2021T4NOIP2021T4 )。好玩的棋牌由扑克牌与三国杀混合而成,主要是三国杀(还是因为三国杀太贵了买不起,但是又很想玩)。在宿舍中名义上是有 cbhcbh 统治,实际上有着各方势力的暗中预谋推翻。所以,在这个棋牌中我们有分成几个队伍,团队协作作战。看似是一场棋牌实际是一场全力的游戏,整场游戏由一个看不见的上帝指定出牌。被指定的人必须执行指令,无论对方是否队友。所有人很想赢得这场权利的游戏的胜利,所以他们还要知道每个人实时的血量,还有每次操作的变化(包括血量上的变化,还有哪些人死亡退出游戏了)。最后还要统计胜利者,还有落败者,胜利的人将建立新的统治,落败的人将沦为奴隶。现在,你可以成为这场权利的游戏的上帝吗?

题目描述

(1)杀:

可以指定一个玩家使用,若这位玩家没有闪。则该玩家扣一滴血。

(2)闪:

当一个玩家对你使用杀时,你可以使用闪进行回避。

(3)南蛮入侵:

当有一名玩家使用南蛮入侵,所有人都必须出一张杀,如果没有,无法出杀的玩家扣一点血。优先出点数最小的。

注意:由于所有人都很怕最先出局,所以有闪时必定会出闪。每个人只关注眼前利益,会出最大的杀。出闪时如果有大于杀点数的,就出其中最小的,如果没有就出最小的。当一个人阵亡时会把自己的牌偷偷交给队友。但是,我们还对这个牌进行了一下改动。

(1)当有玩家对你使用杀时:

我们可以出一张点数大于对方的杀,自己与对方同时扣血。

如果你选择出闪时,必须要出点数大于对方的杀的闪,不然记录一点创。

(2)定义一张补血牌:

补的血为点数减去此时剩余人数取模于 1414 ,如果结果小于零则默认为 11 。由于出补血牌的机会难得,所以都会出最大点数的(不是计算后点数最大的)。

(3)创的定义:

看为暂时存储伤害,如果创集满 44 个,则扣 44 滴血。

现在想要输出的是。

(1)如果有人出杀:

是否杀的是队友。

如果是则次牌作废,且输出 1-1 ,反之则输出这个人还剩余的血量。

如果这个人没有杀也输出 1-1 。并且会降下惩罚,要出杀的人扣一滴血,要被杀的人回一点血。

(2)如果出的是南蛮入侵:

如果此人没有南蛮入侵则输出 1-1 。并且此人血量扣一。

输出所有人扣的血量之和。

还有如果自己队友没有杀可以抵消,就会骂粗话,为了建设文明校园,还要输出有多少人骂粗话。

(3)如果出的是补血牌:

输出回血之后的血量。如果这个人没有回血牌,则输出 1-1,并且这个人立即阵亡。

(4)如果是询问最大:

输出该区间内血量最大的人。

最后一行输出剩余最多人数的小组,和剩余人数最少的。如果存在并列则输出序号最小的。

注意:对于每一个询问的输出,所有数字之间以一个空格分隔,如果有人阵亡要在本行最后输出这个人的序号(从小到大输出),以便大家一起嘲笑。

输入有多组数据。

输入格式

从文件cbhcard.in中读入数据。

第一行一个 tt ,表示有 tt 组数据。

对于每一组数据。

第一行一个 nn ,表示总的人数,mm 表示有多少张牌(数据保证 mmnn 的倍数),一个数 qq 表示出牌轮数。

接下来 nn 个数,表示每个人的血量。

接下来 nn 行,每行一个数 kk ,表示每个人的所分在的组(数据保证 k<nk<n ,且每个队伍都有人)。

再接下来 mm 个数表示每个人的手牌,手牌牌均分,按照 12...n1,2...,n的顺序分发。

对于每张手牌有一个数 opop ,表示手牌种类,11 表示杀, 22 表示闪,33 表示南蛮入侵,44 表示补血牌。还有一个数表示这张牌的点数。

最后 qq 行。

每行先是一个数 opop 表示出的牌的种类。

op=1op = 1

则后跟两个数 aabb 。表示 aabb 出了一张杀。

op=2op = 2

则后跟一个数 aa 。表示 aa 出的南蛮入侵。

op=3op = 3

则后跟一个数 aa 。表示 aa 对自己出了一张回血牌。

op=4op = 4

则后跟两个数 aabb。表示查询 [a[a,b]b] 玩家中血量最大的编号。

输出格式

输出到文件cbhcard.out中。

(1)如果有人出杀:

是否杀的是队友。

若果是则次牌作废,且输出 1-1 ,反之则输出这个人还剩余的血量。

如果这个人没有杀也输出 1-1 。并且会降下惩罚,要出杀的人扣一滴血,要被杀的人回一点血。

(2)如果出的是南蛮入侵:

如果此人没有南蛮入侵则输出 1-1 。并且此人血量扣一。

输出所有人扣的血量之和。

还有如果自己队友没有杀可以抵消,就会骂粗话,为了建设文明校园,还要输出有多少人骂粗话。

(3)如果出的是补血牌:

输出回血之后的血量。如果这个人没有回血牌,则输出 1-1 ,并且这个人立即阵亡。

(4)如果是询问最大:

输出该区间内血量最大的人

最后一行输出剩余最多人数的小组,和剩余人数最少的。如果存在并列则输出序号最小的。

注意:对于每一个询问的输出,所有数字之间以一个空格分隔,如果有人阵亡要在本行最后输出这个人的序号(从小到大输出),以便大家一起嘲笑。

1
5 10 5
113 1015 125 833 893 
1 2 3 4 5 
4 2
4 12
2 10
3 8
3 8
1 9
2 5
4 2
3 3
2 4
3 4
4 1 2 
3 2
1 5 1 
4 5 5
-1 4
1015
1023
-1 1023
1 4

样例 2

​ 见选手目录下的 cbhcard/card2.incbhcard/card2.ans

样例 3

​ 见选手目录下的 cbhcard/card3.incbhcard/card3.ans

数据范围与约定

​ 对于 4040% 的数据:n103n\le10^3 , q2×104q \le 2 \times 10^4 , m105m \le 10^5 , t40t \le 40

​ 对于 100100% 的数据:n4×103n \le 4 \times 10^3 , q8×104q \le 8 \times 10^4 , m1.5×105m \le 1.5 \times 10^5 , t100t \le 100 , 且南蛮入侵的张数不超过 10001000kk 不超过 5050