TopCoder

User's AC Ratio

100.0% (2/2)

Submission's AC Ratio

100.0% (2/2)

Tags

Description

皇后是西洋棋中非常強大的棋子,它可以沿著八種方向在方格上移動到任意格子直到被棋子或邊界擋住,
如果受到阻擋的對象是一個對手的棋子,那皇后可以移動到那個格子並吃掉他。
正式來說,一枚在格子 $(x, y)$ 的皇后可以沿著 $(1, 0), (1, 1), (0, 1), (-1, 1), (-1, 0), (-1, -1), (0, -1), (1, -1)$ 的其中一個方向 $(a, b)$ 移動一個整數倍數 $d$ 如果:

  1. 格子 $(x + a d, y + b d)$ 是空的或被對面的棋子佔領。
  2. 如果 $d > 1$,那對於所有 $1 \leq c < d$,格子 $(x + a c, y + b c)$ 是空的。

在這個情況中,我們說格子 $(x + a d, y + b d)$ 在它的攻擊範圍內。

你的朋友又輸掉一場西洋棋錦標賽的資格賽,已經是連續第五十次了,
「這沒道理!」他的皇后動都沒動就被吃掉了,現在他破防到相信皇后很強只是大家一直道聽塗說,實際上根本就沒有。

你想要證明他的陰謀論是錯的,但他出了一道謎題給你。
在 $n \times m$ 的棋盤上,有數個阻擋格子的障礙物,你需要放置剛好四枚皇后,使得每一對皇后(總共有六對)都在彼此的攻擊範圍內,而且不會被其他皇后或障礙物阻擋。

為什麼是四枚?只是因為是數量最多的可能,不過這對身為西洋棋大師的你不是難題,找出有多少種放置方法可以滿足條件來否決你朋友的陰謀論。

Input Format

輸入的第一行包含兩個整數 $n, m$ 代表棋盤的高度與寬度。
接下來有 $n$ 行,每行有一個長度為 $m$ 的字串。
所有字串都由 @. 組成,第 $i$ 列第 $j$ 個字元代表格子 $(i, j)$ 的狀態:@ 代表被障礙阻擋而 . 代表空的格子。

  • $1 \leq n, m \leq 1600$

Output Format

輸出有多少種放置方法可以滿足題目中的條件。

Sample Input 1

3 4
.@@@
....
...@

Sample Output 1

2

Sample Input 2

5 6
@.....
......
....@.
......
@.....

Sample Output 2

27

Sample Input 3

6 6
..@...
......
.@....
......
.....@
......

Sample Output 3

35

Hints

在第一筆範例中,唯二的放置可能是:

Problem Source

YTP 2025 高中組初賽 p6

Subtasks

No. Testdata Range Constraints Score
1 0~2 範例測試資料 0
2 0~13 $n, m \leq 100$ 1.5
3 0~22 $n, m \leq 700$ 4.5
4 0~40 無額外限制 9

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 6000 1048576 65536 1 2 3 4
1 6000 1048576 65536 1 2 3 4
2 6000 1048576 65536 1 2 3 4
3 6000 1048576 65536 2 3 4
4 6000 1048576 65536 2 3 4
5 6000 1048576 65536 2 3 4
6 6000 1048576 65536 2 3 4
7 6000 1048576 65536 2 3 4
8 6000 1048576 65536 2 3 4
9 6000 1048576 65536 2 3 4
10 6000 1048576 65536 2 3 4
11 6000 1048576 65536 2 3 4
12 6000 1048576 65536 2 3 4
13 6000 1048576 65536 2 3 4
14 6000 1048576 65536 3 4
15 6000 1048576 65536 3 4
16 6000 1048576 65536 3 4
17 6000 1048576 65536 3 4
18 6000 1048576 65536 3 4
19 6000 1048576 65536 3 4
20 6000 1048576 65536 3 4
21 6000 1048576 65536 3 4
22 6000 1048576 65536 3 4
23 6000 1048576 65536 4
24 6000 1048576 65536 4
25 6000 1048576 65536 4
26 6000 1048576 65536 4
27 6000 1048576 65536 4
28 6000 1048576 65536 4
29 6000 1048576 65536 4
30 6000 1048576 65536 4
31 6000 1048576 65536 4
32 6000 1048576 65536 4
33 6000 1048576 65536 4
34 6000 1048576 65536 4
35 6000 1048576 65536 4
36 6000 1048576 65536 4
37 6000 1048576 65536 4
38 6000 1048576 65536 4
39 6000 1048576 65536 4
40 6000 1048576 65536 4