-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
3 changed files
with
74 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# 祖玛 | ||
|
||
## 开始之前 | ||
|
||
你可能需要学习双端链表这一数据结构 | ||
|
||
请阅读同目录下的[doubly_linked_list.md](./doubly_linked_list.md) | ||
|
||
## 题意描述 | ||
|
||
XY最近迷上了一款老游戏——祖玛 | ||
|
||
游戏的规则很简单,XY每个轮次会发射一枚珠子,任意时刻,如果三枚及以上颜色相同的珠子连续存在,则立刻消除,XY获得消除的珠子价值之和乘以消除连续消除轮数的分数(注意到一次消除可能会引起下一次消除),具体而言,如果这是本轮引发的第K次消除,消除了N枚珠子,第i枚珠子的价值为Vi,则有分数P: | ||
|
||
$$ | ||
P=\sum_{i=1}^{N} V_i \times K | ||
$$ | ||
|
||
具体而言,珠子有以下类型和属性: | ||
|
||
* 普通珠 | ||
* 颜色:单个正整数1、2、3表示三种颜色 | ||
* 价值:单个正整数V | ||
* 作用:任意时刻,如果三枚及以上颜色相同的普通珠连续存在,则立刻消除并获得对应的分数 | ||
* 放逐珠 | ||
* 对当前序列第i个珠子发射时,将其放逐,移除该枚珠子,此行为不属于消除,不会得分且不计入当轮消除轮数(放逐行为可能会间接引发消除) | ||
* 置顶珠 | ||
* 对当前序列第i个珠子发射时,将在该珠子之前的序列按顺序移动到尾部,具体而言,若原序列为「1,2...i...n」,得到的新序列为「i,i+1...n,1,2...i-1」 | ||
|
||
如果任意时刻,场面上没有任何珠子,游戏立刻结束,且当前分数翻倍,数据保证在场面上没有任何珠子时不再给出任何操作。 | ||
|
||
## 输入格式 | ||
|
||
第一行给定正整数N表示初始局面中普通珠的数量 | ||
|
||
接下来N行,没行给出一个正整数C和一个正整数V,以空格分隔,按顺序表示初始局面中普通珠子的颜色和价值分布,数据保证初始局面不存在消除的情况 | ||
|
||
第N+1行开始每行给出如下输入 | ||
|
||
每行开头给出正整数K,如果K为0表示输入结束,否则表示对第K个珠子发射 | ||
|
||
以空格分隔,给出正整数T,如果T为4表示放逐珠,T为5表示置顶珠,否则T为普通珠的颜色(1、2、3) | ||
|
||
如果发射的是普通珠,以空格分隔,给出正整数V,表示普通珠的价值 | ||
|
||
## 输出格式 | ||
|
||
输出一个正整数ANS,表示XY的最终得分 | ||
|
||
## 数据范围 | ||
|
||
1<=N<=1000,1<=C<=3,1<=T<=5,1<=V<=10 | ||
|
||
## 样例输入 | ||
|
||
见`test`目录下四组.in文件 | ||
|
||
## 样例输出 | ||
|
||
见`test`目录下四组.out文件 | ||
|
||
## 注意事项 | ||
|
||
已提供宝宝巴士填空版本,也可自己白手起家,但请不要在你的代码中声明任何数组 | ||
|
||
请勿修改代码名称(zuma),若白手起家请依旧命名你的代码文件为zuma.c | ||
|
||
运行datamaker可执行文件生成一组随机测试样例:randomcase.in,randomcase.out | ||
|
||
```shell | ||
make all # 编译代码 | ||
make judge-case # 运行测试样例 | ||
make judge-random # 随机生成样例进行测试 | ||
``` |