QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 1024 MB Total points: 100

#23946. Garden 2

Statistics

問題文

JOI 庭園は縦 N 行,横 N 列のマス目状に区切られた正方形の形をしている. 上から i 行目 (1 ≦ i ≦ N),左から j 列目 (1 ≦ j ≦ N) のマスは区画 (i, j) と呼ばれている.

JOI 庭園は土壌にあまり恵まれていないため,各区画には特定の 1 種類の色の花を,最大 1 本しか植えることができない. 具体的には,区画 (i, j) には Ai, j= R のとき赤,Ai, j= Y のとき黄,Ai, j= B のとき青の色の花を最大 1 本しか植えることができない.

ここで,この庭園の管理者である K 理事長は,航空写真を撮った時の見栄えを良くするため,次の手順で花を植えようと思っている.

  1. 大きさを表す整数 r を決める.ただし 0 ≦ r ≦ (N-1) ÷ 2 を満たさなければならない.
  2. 中心を表す区画 (x, y) を決める.ただし r+1 ≦ x ≦ N-r,r+1 ≦ y ≦ N-r を満たさなければならない.
  3. 色 c0, c1, c2, …, cr をそれぞれ赤・黄・青の中から選んで決める.
  4. それぞれの区画 (x', y') について,d = |x'-x| + |y'-y| に応じて以下の規則で花を植える.ただし,|t| は t の絶対値を表す.
    • d ≦ r であるならば,区画 (x', y') には色 cd の花を植える.
    • d > r であるならば,区画 (x', y') には花を植えない.

庭園の大きさ,各区画に植えることができる花の色の情報が与えられたとき,K 理事長が植えることができる花の数の最大値を求めるプログラムを作成せよ.

制約

  • 3 ≦ N ≦ 3 500.
  • Ai, j は R,Y,B のいずれかである (1 ≦ i ≦ N, 1 ≦ j ≦ N).
  • N は整数である.

小課題

  1. (4 点) N = 3.
  2. (13 点) N ≦ 50.
  3. (17 点) N ≦ 800.
  4. (14 点) Ai, j≠ R を満たす (i, j) (1 ≦ i ≦ N, 1 ≦ j ≦ N) は 5 個以下である.
  5. (16 点) どの (i, j) (1 ≦ i ≦ N-1, 1 ≦ j ≦ N-1) についても,Ai, j,Ai, j+1,Ai+1, j,Ai+1, j+1 の中に R が 3 個以上存在する.
  6. (36 点) 追加の制約はない.

入力

入力は以下の形式で与えられる.
N
A1,1 A1,2 … A1,N
A2,1 A2,2 … A2,N
︙
AN,1 AN,2 … AN,N

出力

K 理事長が植えることができる花の数の最大値を 1 行で出力せよ.

入出力例

入力例 1
3
RYR
YBY
BYY

出力例 1
5

r = 1,(x, y) = (2, 2) とし,c0 として青,c1 として黄を選ぶと,下図のように 5 本の花を植えることができる.ただし,背景色は各区画に植えることができる花の色を示している.

6 本以上の花を植える方法は存在しないため,5 を出力する.

この入力例は小課題 1, 2, 3, 6 の制約を満たす.


入力例 2
9
YYRYBBBYR
BYYRRBYBB
RBRRBRBBY
RYRBRYRBR
YYBRYYYRB
RRYBRYRBR
RBYRBRBRB
BRYYRBBBR
RBBBYBRRY

出力例 2
25

r = 3,(x, y) = (5, 6) とし,c0 として黄,c1 として黄,c2 として赤,c3 として青を選ぶと,下図のように 25 本の花を植えることができる.ただし,背景色は各区画に植えることができる花の色を示している.

26 本以上の花を植える方法は存在しないため,25 を出力する.

この入力例は小課題 2, 3, 6 の制約を満たす.


入力例 3
6
RBYRBY
BYRBYR
YRBYRB
RBYRBY
BYRBYR
YRBYRB

出力例 3
1

この入力例は小課題 2, 3, 6 の制約を満たす.


入力例 4
20
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRBRRRRRRRRRRRRYRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRYRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRYRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRBR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR

出力例 4
85

この入力例は小課題 2, 3, 4, 5, 6 の制約を満たす.


入力例 5
10
RRRRRRRRRR
RYRRRRRRRR
RRRRYRRRRR
RBRRRRRRRR
RRRRRRRRYR
RBRRRRRRRR
RRRRBRRRRR
RBRRRRRRRR
RRRRRRRRYR
RRRRRRRRRR

出力例 5
25

この入力例は小課題 2, 3, 5, 6 の制約を満たす.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.