A. 樱木花道的球场风暴T1

    传统题 文件IO:bfs 1000ms 512MiB

樱木花道的球场风暴T1

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

樱木花道的球场风暴

题目描述

樱木花道最近开始向安西教练学习篮球战术。其中有一种特殊的防守阵型:从某个关键位置开始,球员们会一圈圈向外扩散防守,就像水波一样逐渐扩大防守范围。

某天训练结束后,樱木与流川枫进行一场特别的防守对决:流川站在球场中央,樱木则会指挥赤木刚宪、三井寿、宫城良田等队员,用广度优先搜索(BFS)的方式,以流川枫为中心向外层层扩散防守区域。

樱木给队友们展示了一段他亲手写的BFS代码:

void bfs(int sx, int sy){
    queue<Node> q;
    q.push(Node{sx, sy});
    while (!q.empty()){
        Node now = q.front();
        q.pop();
        for (int i = 0; i < 4; ++i){
            int tx = now.x + dirx[i];
            int ty = now.y + diry[i];
            if (vis[tx][ty] == 0){
                q.push(Node{tx, ty});
                vis[tx][ty] = 1;
            }
        }
    }
}

队长赤木刚宪很快发现,这段代码中存在一个重大缺陷——没有进行边界检查!如果一直搜索下去,将永远扩散下去。

赤木举例说明道:假设以流川枫为中心,他所占据的位置最初记为1,其余位置为0:

第一轮扩散后:

0000000
0000000
0001000
0000000
0000000

第二轮扩散后:

0000000
0001000
0011100
0001000
0000000

第三轮扩散后:

0001000
0011100
0111110
0011100
0001000

樱木听完点了点头,却马上转头问你:如果不考虑场地边界的限制(也就是假设场地无限大),在第 $n$ 轮扩散防守后,防守区域(值为1的位置)共有多少个呢?

作为樱木的战术顾问,这个问题就由你来帮他回答吧!

输入格式

输入文件仅包含一个整数 $n$,表示防守扩散的轮数。

输出格式

输出一个整数,表示第 $n$ 轮扩散结束后防守区域的总面积(即防守区域的点数)。

样例

3
13
1000000000
1999999998000000001

数据范围

  • 对于 $50%$ 的数据,保证 $1 \leq n \leq 20$
  • 对于 $80%$ 的数据,保证 $1 \leq n \leq 10000$
  • 对于 $100%$ 的数据,保证 $1 \leq n \leq 10^9$

文件读写

  • 输入文件:bfs.in
  • 输出文件:bfs.out

限制

  • 时间限制:1000ms
  • 空间限制:512MB

2025-CSP-J冲刺OI专项训练5

未参加
状态
已结束
规则
OI
题目
4
开始于
2025-8-13 6:00
结束于
2025-8-25 18:00
持续时间
3 小时
主持人
参赛人数
15