Type: Default 1000ms 256MiB

【Level 1】auto

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

auto 关键字

  现代 C++ 通常是指 C++ 11 及之后的 C++ 版本,因为其对于 C++ 语法进行了大幅度的更新,引入了方便的特性,本文要介绍的 auto 关键字的特性就是其中之一。本文不讨论 autoconst& 结合所产生的复杂化学反应,如果有兴趣请自行了解。

  定义变量的方式是 类型 变量名,而如果你使用 auto 则编译器会自动推导变量的类型,如下所示,x 将会被自动推导为 int 类型。

auto x = 5;

  我们前面已经知道,引用是在类型的位置加一个 &,但编译器目前还不够智能,不能自动推断你是否要使用引用,因此你需要手动加上,如下所示

auto x = 5;
auto &r = x;

简化代码

案例1

  auto 关键字对于我们目前最大作用是简化代码,例如我们要取一个 vector 首个元素的迭代器(我们将在 STL 部分解释迭代器的作用),需要用对应 vector 类型的迭代器来接受,这样的写法较为麻烦,如下所示

vector<int> vec;

vector<int>::iterator itr;
itr = vec.begin();

  这时我们就可以使用 auto 来省去类型

vector<int> vec;

auto itr = vec.begin();

案例2

  在前面讲解数组时,我们已经知道可以用 auto 简化 vector 的遍历,让我们回顾一下

vector<int> nums;

for (auto x : nums) {
    // do something ...
}

  我们可以根据实际需求决定是否使用引用或者 const。如果我们想要修改 nums 的内容,就必须声明为引用,如下所示

for (auto &x : nums) {
    // do something ...
}

  有时候我们会看到 const& 一起出现,既然要修改才加引用,但为什么又要加 const 使其不能修改呢?这是因为这里的引用起到的作用是减少拷贝,如果只是要读取 vector 内的元素,你都可以这样做。

for (const auto &x : nums) {
    // do something ...
}

案例3

  在介绍引用时提到的一个简化 vector 的例子,我们将其简化为

vector<int> &ax = a[i - 2*j +1];

  不难发现,可以使用 auto 来进一步简化

auto &ax = a[i - 2*j + 1];

Description

  在一次星际旅行中,飞船正在探索一个 n x m 的二维星域矩阵,每个位置表示一个星球的资源储量。飞船从某个星球出发,经过多个星球,根据指令进行移动后采集资源。如果移动指令非法(超出边界),则忽略这条移动指令,在原地再采集一次。

  资源采集规则:

  1. 飞船经过的星球 (i, j) 本身资源会减少 2 个单位
  2. 对于该星球相邻的 3x3 区域内的其它星球,按照以下规则进行资源变化:
  • 如果相邻星球的资源储量大于当前星球的资源储量,增加 1 个单位
  • 如果相邻星球的资源储量小于等于当前星球的资源储量,减少 1 个单位
  1. 资源最多只能减少到 0
  2. 先移动,后采集资源

Format

Input

  第一行两个整数 nnmm,表示星域矩阵的行数和列数。

  接下来 nn 行,每行包含 mm 个整数,表示每个星球的资源储量。

  接下来一行两个整数 x y (0x<n)(0y<m)x\ y\ (0 \leq x < n) (0 \leq y < m),表示飞船的起始位置。

  接下来一行一个整数 tt,表示飞船的运动步数。

  接下来 tt 行,每行表示飞船的一个移动方向,方向由字符 U(上)、D(下)、L(左)、R(右)中的一个表示。

Output

  输出一个 n x m 的矩阵,表示经过资源采集操作后的资源储量矩阵。

Samples

3 3
5 5 5
5 5 5
5 5 5
2 2
4
U
L
D
R
6 7 7 
7 2 0 
7 4 6 
3 3
5 5 5
5 5 5
5 5 5
0 0
4
U
L
D
R
0 9 4
4 6 4
3 3 4

C++入门

Not Attended
Status
Done
Rule
IOI
Problem
16
Start at
2024-9-3 0:00
End at
2024-11-25 8:00
Duration
2000 hour(s)
Host
Partic.
112