連線計分 (APCS 2026-11 中級)

2.0s 256M

小明在一個 \(R \times C\) 的棋盤上玩連線計分遊戲。棋盤由上而下第 \(r\) 列、由左而右第 \(c\) 欄的格子記為 \((r, c)\),列、欄都從 \(1\) 開始編號。每一格是空格、黑棋或白棋。

小明要挑一個空格,在那裡下一顆黑棋或一顆白棋。下完之後,以這顆新棋子為中心,看橫、直、左上到右下的斜線、右上到左下的斜線這四個方向:在每個方向上,從新棋子往兩邊數和它同色、而且連在一起的棋子,連同新棋子自己一共有 \(L\) 顆,\(L\) 就是這個方向的連線長度。連線必須是連續的同色棋子,中間只要隔著空格或另一種顏色的棋子就斷了。

某個方向的連線長度 \(L\) 如果至少是 \(3\),這個方向得到 \(L^2\) 分;\(L\) 只有 \(1\) 或 \(2\) 就不得分。四個方向的分數加起來,就是這一步的得分。新棋子只有一種顏色,四個方向都用它的顏色來數。

請找出這一步最高能得幾分、要下在哪一格。如果有好幾格都能得到最高分,選列編號最小的;列編號也相同,就選欄編號最小的。

舉例來說,下圖的棋盤上已經有三顆黑棋:\((3, 2)\)、\((3, 4)\)、\((4, 3)\)。在紅框的 \((3, 3)\) 下一顆黑棋,橫的方向 \((3, 2)\)、\((3, 3)\)、\((3, 4)\) 三顆相連,得 \(3^2 = 9\) 分;直的方向 \((3, 3)\)、\((4, 3)\) 只有兩顆,不得分;兩條斜線上都只有新棋子自己一顆,也不得分。這一步共得 \(9\) 分。圖中穿過棋子的線,是有得分的方向。

5 列 5 欄的棋盤,黑棋在 (3,2)、(3,4)、(4,3);紅框裡是新下的黑棋 (3,3),一條線橫穿 (3,2)、(3,3)、(3,4)
方向 連續幾顆 分數
橫 3 \(3^2 = 9\)
直 2 0
左上到右下 1 0
右上到左下 1 0
合計 9

輸入格式

第一行有兩個正整數 \(R\) 和 \(C\),代表棋盤有 \(R\) 列、\(C\) 欄。

接下來有 \(R\) 行,其中第 \(r\) 行有 \(C\) 個整數,依序是第 \(r\) 列第 \(1\)~\(C\) 欄的格子:\(0\) 是空格、\(1\) 是黑棋、\(2\) 是白棋。

同一行的整數之間以一個空白隔開。

限制

  • \(1 \le R \le 50\)
  • \(1 \le C \le 50\)
  • 棋盤上至少有一個空格。

輸出格式

輸出一行,包含三個整數 \(r\)、\(c\)、\(s\),以一個空白隔開,代表下在 \((r, c)\) 可以得到最高分 \(s\)。如果每個空格的得分都是 \(0\),就輸出列編號最小(列編號相同時欄編號最小)的空格與 \(0\)。

評分說明

每一筆測試資料的執行時間限制均為 \(2\) 秒,依正確通過的測試資料筆數給分。

子題 分數 額外限制
1 60 \(R = 1\)
2 40 無額外限制

範例輸入 1

5 5
0 0 0 0 0
0 0 0 0 0
0 1 1 0 0
1 0 1 0 0
0 0 1 0 0

範例輸出 1

2 3 25

範例解釋 1

在紅框的 \((2, 3)\) 下黑棋:直的方向 \((2, 3)\)、\((3, 3)\)、\((4, 3)\)、\((5, 3)\) 四顆相連,得 \(4^2 = 16\) 分;右上到左下的斜線 \((2, 3)\)、\((3, 2)\)、\((4, 1)\) 三顆相連,得 \(3^2 = 9\) 分;橫的和左上到右下的斜線都只有一顆,不得分。共 \(25\) 分,是全盤最高分。

範例 1 的棋盤;紅框裡是新下的黑棋 (2,3),一條線直穿 (2,3) 到 (5,3),另一條線斜穿 (2,3)、(3,2)、(4,1)
方向 連續幾顆 分數
橫 1 0
直 4 \(4^2 = 16\)
左上到右下 1 0
右上到左下 3 \(3^2 = 9\)
合計 25

範例輸入 2

4 4
1 0 1 1
2 1 2 0
2 0 1 2
0 2 2 1

範例輸出 2

4 1 18

範例解釋 2

在紅框的 \((4, 1)\) 下白棋:橫的方向 \((4, 1)\)、\((4, 2)\)、\((4, 3)\) 三顆相連,得 \(9\) 分;直的方向 \((2, 1)\)、\((3, 1)\)、\((4, 1)\) 三顆相連,也得 \(9\) 分;兩條斜線都不得分。共 \(18\) 分。

範例 2 的棋盤;紅框裡是新下的白棋 (4,1),一條線橫穿 (4,1)、(4,2)、(4,3),另一條線直穿 (2,1)、(3,1)、(4,1)
方向 連續幾顆 分數
橫 3 \(3^2 = 9\)
直 3 \(3^2 = 9\)
左上到右下 1 0
右上到左下 1 0
合計 18

如果改在 \((3, 2)\) 下白棋,左上到右下的斜線 \((2, 1)\)、\((3, 2)\)、\((4, 3)\) 三顆相連,得 \(9\) 分,但另外三個方向都只有兩顆,不得分,這一步只有 \(9\) 分。

題目來源

APCS 2026 年 11 月中級實作題第 2 題。

官方未公布題本,題敘依考生考後回憶整理(豌豆 APCS 提供),細節可能與正式試題有出入。

題目頁說明

快速鍵

主要功能

  • 範例測試 — 執行題目附帶的範例測資並自動比對預期輸出。
  • 自訂測試 — 自己貼 stdin 執行程式。可勾選「與預期輸出比對 (diff)」做行對行比對。
  • 模板 — 貼上你在個人資料設定的預設程式碼模板。
  • 協作 — 與其他同學共筆編輯這題的程式碼。
  • 自動草稿 — 編輯器內容每 1.5 秒自動存到瀏覽器(per 帳號 / 題目 / 語言)。
  • 提交 — 把程式碼交給 judge 評測,回傳 AC / WA / TLE 等結果。

限制

  • 程式碼最多 65,536 字元
  • 自訂測試 stdin 與預期輸出各最多 1 MB (約 100 萬字元)
  • 自訂測試與範例測試共用一個沙箱,每人約 3 秒 1 次 (範例測試 1 秒 1 次)
  • 自訂測試與範例測試都有 15 秒 牆鐘上限(正式評測仍依題目原本時限)
  • 互動題不提供自訂測試(無法模擬與 judge 互動)。
  • 提交評測本身沒有 rate limit,但同題短時間內多次提交會被視為刷分。