2019年4月26日金曜日

ABC 018 C - 菱形カウント

ABC 018 C - 菱形カウント

長方形領域の周りがxで囲われているものとして考える:

xxxxxxx
xxoooox
xooooxx
xooooox
xoxxoox
xxxxxxx

xからの最短距離がKK以上であるマスがわかれば、その数が答えである。具体的には、マスx00に、マスoinf\infに初期化した上で、00に初期化した点をすべてキューに入れてBFSすれば良い:

0   0   0   0   0   0   0
0   0   inf inf inf inf 0
0   inf inf inf inf 0   0
0   inf inf inf inf inf 0
0   inf 0   0   inf inf 0
0   0   0   0   0   0   0

0   0   0   0   0   0   0
0   0   1   1   1   1   0
0   1   2   2   1   0   0
0   1   1   1   2   1   0
0   1   0   0   1   1   0
0   0   0   0   0   0   0

計算量はO(RC){\mathcal O}(RC)