QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100

#4323. 德州消消乐

الإحصائيات

题目背景

众所周知小c是开心消消乐的高手,而小z玩这种稍微需要动一点脑子的游戏都很不在行。正值五一假期,小c闲得无聊就打算来教小z。

经过五天五夜不间断教学,小z终于领悟了一点门道(小z内心os:但凡能拿出一点热情来学概率论……),然而他俩都忽略了这玩意是会玩上瘾的,更关键的是小z来自山东,于是他打算融入一点家乡特色……

小z:”……众所周知德州在山东,那我们就叫它‘德州消消乐’吧!“

小c连忙制止道你快算了吧,上次的大杂糅棋局你忘了?再说此德州非彼德州啊喂,这次你要搞就自己搞吧别拉我下水了。

话还没说完,小z转手把规则甩给了小c。

小c:“真香”。

题目描述

给定大小为 $n \times m$ 的棋盘,记左上角坐标为 $(1,1)$ ,右下角坐标为 $(n,m)$ 。有不同颜色的棋子共 $k$ 种,颜色编号为 $1\sim k$ 。最初每个格子都有一个棋子。

共有 $q$ 次操作,每次操作形如交换相邻(在上、下、左、右方向)的两个棋子。在此之后,在同一行或同一列的连续至少 $3$ 个相同颜色的棋子会被消除。

消除后,所有棋子会遵循重力下落,这一列的最上方变成空位。所有棋子下落完成后,如果又产生了能消除的情况,则会触发连锁反应继续消除,直到无法消除为止。称一次消除+一次下落为“一轮消除”,由此可以定义一次操作触发的消除“轮数”。

其中,有些棋子具有特殊属性,被消除时会触发特殊效果,一共有以下 $6$ 类:

  • 1、消除时将同一行的全部棋子消除;
  • 2、消除时将同一列的全部棋子消除;
  • 3、消除时将同一行和同一列的全部棋子消除;
  • 4、消除时将以之为中心 $3 \times 3$ 的正方形范围内的棋子全部消除;
  • 5、消除时将以之为中心 $5 \times 5$ 的正方形范围内的棋子全部消除;
  • 6、消除时将与之颜色相同的棋子全部消除;

触发一个棋子的特殊效果时可能连锁触发其他棋子的特殊效果,但是这些都是在同一轮消除内触发的(即连锁反应触发的过程中不会引起下落)。

游戏中,每次操作都要求必须有效,即操作的两个位置相邻且均不为空位,且在操作之后能进行棋子的消除。若某此操作并非有效,则直接跳过这一次操作。所有 $q$ 次操作结束后游戏结束。

定义一次有效操作的“主颜色”为通过交换而直接被消除的颜色(即不包括特殊效果触发和下落引起的消除),容易发现一次有效操作的主颜色至少有 $1$ 种,最多有 $2$ 种。

游戏中,玩家要通过操作来获取尽可能多的得分。得分的规则有如下 $5$ 种:消除奖分+连锁奖分+组合奖分+牌型奖分+终局奖分。

  • 消除奖分:每次有效操作中,第 $i$ 轮消除的消除奖分为这一轮中所有被消除的棋子的颜色编号之和的 $i$ 倍。
  • 连锁奖分:设某次有效操作的总消除轮数为 $x$ ,则有连锁奖分 $80(x-1)^2$ 。
  • 组合奖分:某一轮消除中,在仅考虑由“同一行或同一列至少连续 $3$ 个相同颜色”引发的消除的情况下(即不考虑所有特殊效果引起的消除),设某个被消除的同色四连通块大小为 $x$ ,则有组合奖分 $50(x-3)^2$ 。如: $4$ 个同色棋子组成四连的组合奖分为 $50$ ,$5$ 个同色棋子组成五连、十字或T字等形状的组合奖分为 $200$ ,$2\times3$ 的方形同色棋子的组合奖分为 $450$ 。
    • 牌型奖分:每 $5$ 次有效操作计算一次牌型奖分,取之前 $5$ 次有效操作的主颜色(若某次操作有多个主颜色,取能按照以下规则计算出的最大奖分的主颜色),按照如下牌型规则计算奖分:
      • 高牌: $5$ 种颜色全部不同,奖 $50$ 分 + 所有牌中最大的颜色编号;
      • 一对: $2$ 个相同颜色 + $3$ 个不同颜色,奖 $100$ 分 + 一对的颜色编号 $\times 2$ ;
      • 两对: $2$ 对相同颜色 + $1$ 个其他颜色,奖 $200$ 分 + 两对中较大的颜色编号 $\times 2$ + 两对中较小的颜色编号;
      • 三条: $3$ 个相同颜色 + $2$ 个不同颜色,奖 $300$ 分 + 三条的颜色编号 $\times 3$ ;
      • 葫芦: $3$ 个相同颜色 + 另外 $2$ 个相同颜色,奖 $500$ 分 + 三个相同的颜色编号 $\times 3$ + 两个相同的颜色编号;
      • 四条: $4$ 个相同颜色 + $1$ 个其他颜色,奖 $750$ 分 + 四条的颜色编号 $\times 5$ ;
      • 五条: $5$ 个颜色全部相同,奖 $1000$ 分 + 五条的颜色编号 $\times 10$ 。
    • 终局奖分:若所有 $q$ 次操作均有效,在终局时额外获得 $1000$ 分终局奖分;若游戏结束时棋盘被全部清空,额外获得 $10000$ 分的终局奖分。

给定一局游戏的初始局面和玩家的每一次操作,你需要计算玩家的总得分。

输入格式

第 $1$ 行: $4$ 个正整数 $n,m,k,q$ 。

接下来 $n$ 行,每行 $m$ 个正整数 $a_{i,j}$ ,表示初始状态下,从上往下第 $i$ 行、从左往右第 $j$ 列的棋子的颜色。

接下来 $n$ 行,每行 $m$ 个非负整数 $b_{i,j}$ ,表示初始状态下,从上往下第 $i$ 行、从左往右第 $j$ 列的棋子的特殊效果,含义如题面所述。特别地, $b_{i,j}=0$ 表示没有特殊效果。

接下来 $q$ 行,每行 $4$ 个正整数 $x_{i,1},y_{i,1},x_{i,2},y_{i,2}$ ,表示交换坐标 $(x_{i,1},y_{i,1})$ 和 $(x_{i,2},y_{i,2})$ 位置的棋子。

数据范围:$n,m\leq 50,\ k \leq 100,\ q \leq 1000,\ a_{i,j} \leq k,\ b_{i,j} \leq 6,\ x_{i,1},x_{i,2} \leq n,\ y_{i,1},y_{i,2} \leq m$ 。保证初始局面没有可以直接消除的情况。

输出格式

输出一行,一个非负整数表示终局时的总得分。

样例数据

样例 1 输入

8 8 5 5
1 1 5 1 5 4 5 3
2 1 2 2 5 4 3 2
1 4 1 4 2 1 5 4
2 1 5 5 2 1 4 4
2 3 5 2 3 4 2 2
4 2 4 3 3 2 4 5
1 3 4 3 5 2 4 3
3 4 2 5 2 1 1 2
0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
0 0 0 0 5 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 6 0 0 3 1
0 0 0 0 3 0 0 0
0 0 0 0 0 0 1 4
3 2 4 2
5 4 5 5
7 2 7 3
8 5 8 6
6 7 6 8

样例 1 输出

11692

样例 1 解释

每次操作后,前 $3$ 类奖分的和分别为:$315,\ 417,\ 429,\ 435,\ 482$ 。第 $5$ 次操作后计算牌型奖分,最优牌型为 $(1\ 2\ 4\ 2\ 4)$ ,奖分为 $200 + 4\times 2 + 2 \times 1 = 210$ 。终局时两种终局奖分均可获得,故总分为 $11692$ 。

样例 2 输入

8 8 5 8
1 1 5 1 5 4 5 3
2 1 2 2 5 4 3 2
1 4 1 4 2 1 5 4
2 1 5 5 2 1 4 4
2 3 5 2 3 4 2 2
4 2 4 3 3 2 4 5
1 3 4 3 5 2 4 3
3 4 2 5 2 1 1 2
0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
0 0 0 0 5 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 6 0 0 3 1
0 0 0 0 3 0 0 0
0 0 0 0 0 0 0 0
1 1 2 2
3 2 4 2
3 2 3 3
4 2 4 3
5 4 5 5
7 2 7 3
8 5 8 6
6 7 6 8

样例 2 输出

684

样例 2 解释

与上一组样例相比,增加了 $3$ 次无效操作,且最后不能实现全消,因此得不到终局奖分。

样例 3 输入

5 5 2 1
1 1 2 1 1
1 1 2 1 1
2 2 1 2 2
1 1 2 1 1
1 1 2 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
3 3 4 3

样例 3 输出

3023
About Issues

We understand that our problem archive is not perfect. If you find any issues with the problem, including the statement, scoring configuration, time/memory limits, test cases, etc.

You may use this form to submit an issue regarding the problem. A problem moderator will review your issue and proceed it properly.

STOP! Before you submit an issue, please READ the following guidelines:

  1. This is not a place to publish a discussion, editorial, or requests to debug your code. Your issue will only be visible by you and problem moderators. Other users will not be able to view or reply your issues.
  2. Do not submit duplicated issues. If you have already submitted one, please wait for an moderator to review it. Submitting multiple issues will not speed up the review process and might cause your account to be banned.
  3. Issues must be filed in English or Chinese only.
  4. Be sure your issue is related to this problem. If you need to submit an issue regarding another problem, contest, category, etc., you should submit it to the corresponding page.

Active Issues 0

No issues in this category.

Closed/Resolved Issues 0

No issues in this category.