樱木花道的球场风暴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