#P13988. 「RMI 2025」Squirrel
「RMI 2025」Squirrel
注意事项
提交的程序需要包含"squirrel.h"头文件
题目描述
一只松鼠发现了一个坚果仓库。仓库包含 行房间,编号从 到 。索引为 的行包含 个房间,编号从 到 。位于第 行第 列的房间包含 个坚果。
在这 个房间中,数字 都是互不相同的,且取值在 到 之间。形式上,仓库的形状是一个下三角矩阵(包含主对角线),其中每个元素代表坚果的数量。这个半矩阵中的数字是 到 的排列,每个数字恰好出现一次。
例如,对于 ,仓库将有 个房间,包含从 到 的数字。这样一个仓库的样例如下方的半矩阵所示:

松鼠沿着主对角线行走,在位于位置 的每个房间,它会在以位置 为右上角、位置 为左下角的矩形区域内选择一个房间,并吃掉那个房间里的坚果。在上面的例子中,当松鼠位于位置 时,它可以选择吃掉 个红色房间中任意一个房间里的坚果。在它走过主对角线上的所有房间并吃掉恰好 个不同房间的坚果后,松鼠心满意足地离开了。
给定 以及满足 和 的任意 ,找出松鼠能吃到的最大坚果数量。
此外,对于访问的 个房间中的每一个,找出松鼠在对应步骤吃掉的坚果数量。
实现细节
你必须实现以下函数:
void solve(int N, vector<vector<int>> A, long long& answer, vector<int>& solution)
int N:仓库大小 / 行数vector<vector<int>> A:每个房间里的坚果数量(更准确地说,在满足 和 的 中,你会找到位于第 行第 列的房间里的坚果数量)long long &answer:将包含松鼠走完对角线上所有 个房间后能吃到的最大坚果数量。vector<int> &solution:一个向量,将包含松鼠在每一步吃掉的坚果数量。(更准确地说,满足 的solution代表松鼠在房间 时吃掉的坚果数量)
对于 和 solution,索引都从 开始,且 solution 向量的大小应正好为 。
5
1
14 6
8 2 15
3 10 4 12
9 5 13 11 7
64
14 10 15 12 13
数据范围与提示
对于所有输入数据,满足:
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 矩阵的内容是随机生成的。 | ||
| 无附加限制 |