Problem 4147 --I 2048游戏

4147: I 2048游戏

"
Time Limit $1$ 秒/Second(s) Memory Limit $128$ 兆字节/Megabyte(s)
提交总数 $0$ 正确数量 $0$
裁判形式 标准裁判/Standard Judge 我的状态 尚未尝试
难度 分类标签
环滁皆山也,长途客车是滁州市的重要交通工具。小王正在坐长途客车,在坐车过程中,为了打发时间,小王玩起了手机。
小王打开了一款叫2048的游戏。这款游戏在一个n*n的棋盘中进行,棋盘的每个格子中可能有一个形如2k(k E N*)的数,也可能是空的。游戏规则介绍如下:
1.游戏开始时棋盘内将会生成两个数字,生成的数字仅可能为2或4;
2.每次操作,玩家可以选择上、下、左、右四个方向进行平移;
3.以向上平移为例,从上往下考虑每个不为空的格子,若上方与之相邻的格子为空,则将该格子上的数字移动至相邻格子。在一次位移中,每个数字会进行多次移动直到不能移动为止。

4.以向上平移为例,从上往下考虑每个不为空的格子,若上方与之相邻的数字恰好与其相等,则这两个数字可以合并,新生成的数字为原来两个数之和。在一次合并中,每个数字只能与其它数合并一次,可以同时合并多对数字,但不能连续合并;

5.每次操作由位移+合并+位移组成,若操作后棋盘局面发生变化,则该操作为有效操作,其有效得分为合并过程中所有新生成的数字之和;
6.在每次操作之后,棋盘内都会新生成一个数字2或4,数字只会在空格子处生成;
7.当棋盘被数字填满,玩家无法进行任何有效操作时,游戏结束,游戏总得分为所有操作的有效得分之和。
 为了降低难度,小王对2048游戏进行了一些改动。在游戏开始前,小王会告诉你棋盘的初始状态,并且给你若干次操作。每次操作由方向变量、位置参数和一个数字组成,方向变量代表你在本次操作中的平移方向,给定的数字为本次操作过后将会新生成的数字的大小,而位置参数将决定生成数字的位置。若位置参数为K,操作后棋盘中空格子的数量为r,则新生成数字的位置为从上到下、从左到右第(1+K mod r)个空格子。如果本次操作为无效操作,则游戏结束,而当所有操作都完成后,游戏同样结束。(注意:改动后,游戏结束时棋盘不一定被数字填满。)

现在小P问你,在游戏结束前你一共进行了多少次有效操作,最后你的游戏总得分是多少。

第一行为两个正整数n和m,分别表示棋盘的大小和操作的个数。第二行为六个正整数:x1,y1,v1和x2,y2,v2,分别代表游戏开始时,棋盘上两个数字的位置(行/列)和大小。行号从上往下编号,列号从左往右编号,编号均以1开始。接下来m行,表示小王给你的m个操作。每行由三个自然数Di, Ki, Vi组成, 其中Di代表本次操作的平移方向,(0/1/2/3分别代表上/下/左/右。Ki为位置参数,Vi为操作后生成的数的大小。

输出共两行,每行一个正整数,分别代表你完成的有效操作数与游戏总得分。
3 6
2 1 2 3 2 4
1 14 2
1 6 4
2 10 2
0 3 2
2 17 2
3 14 4
4
12

推荐代码 查看4147 所有题解 上传题解视频得图灵币

本题记录 用 户(点击查看用户) 运行号(点击购买题解) 时 间
算法最快[$ $ms]
内存最少[$ $KB]
第一AC
第一挑战

赛题来源/所属竞赛 安徽省机器人大赛2024 N/A

竞赛编号 竞赛名称 竞赛时间 访问比赛