DOJ logoDOJ
問題
最近追加された問題保存した問題
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

Fujiwara Wants to See Couples

問題に戻る

解説

두 성별을 서로 바꾸어도 만나는 횟수는 같다. 따라서 s=min⁡(B,G)s=\min(B,G)s=min(B,G)라 하고, 더 적은 쪽의 학생을 배치할 sss개의 칸을 고르자. B=GB=GB=G이면 어느 쪽을 골라도 된다.

칸의 차수를 그 칸과 변을 공유하는 칸의 개수라고 하자. 내부 칸의 차수는 444, 모서리가 아닌 테두리 칸의 차수는 333, 모서리 칸의 차수는 222이다.

격자를 체스판처럼 두 색으로 칠하면 같은 색의 두 칸은 변을 공유하지 않는다. 한 색의 칸에서만 sss칸을 고르면, 선택한 칸의 차수의 합이 그대로 만나는 횟수가 된다. 그러므로 각 색에 대해 차수가 큰 칸부터 sss개 고르고, 두 색 중 차수의 합이 더 큰 쪽을 선택한다. 합이 같으면 어느 쪽을 골라도 된다. 각 색에는 적어도 ⌊N2/2⌋≥s\lfloor N^2/2\rfloor\geq s⌊N2/2⌋≥s개의 칸이 있으므로 항상 가능하다.

정렬할 필요는 없다. 각 색에서 차수가 4,3,24,3,24,3,2인 칸의 개수를 세고, 그 순서대로 몇 칸씩 선택할지 정하면 된다. 선택한 색과 차수별 개수를 구한 뒤 격자를 다시 순회하면서 해당 개수만큼 더 적은 성별을 배치한다. 나머지 칸은 다른 성별로 채운다. s=0s=0s=0인 경우에도 같은 과정으로 격자 전체가 한 성별로 채워진다.

격자를 상수 번 순회하므로 시간 복잡도는 O(N2)O(N^2)O(N2)이다. 한 행씩 만들어 출력하면 공간 복잡도는 O(N)O(N)O(N)이다.

증명

체스판의 한 색만 사용하는 배치가 최적이라는 사실을 증명해야 한다. 임의의 배치에서 더 적은 성별을 배치한 칸을 선택한 칸이라고 하자. 만나는 횟수를 FFF, 선택한 내부 칸의 수를 uuu, 선택한 모서리 칸의 수를 ccc, 양 끝 칸이 모두 선택된 변의 수를 eee라고 하자. 선택한 칸의 차수 합에서 이러한 변을 두 번씩 빼면

F=3s+u−c−2eF=3s+u-c-2eF=

Solution written by GPT6

3s+
u−
c−
2e

를 얻는다. 모든 차수가 444 이하이므로 F≤4sF\leq4sF≤4s도 성립한다.

a=⌈(N−2)2/2⌉a=\lceil(N-2)^2/2\rceila=⌈(N−2)2/2⌉라고 하자. 내부의 (N−2)×(N−2)(N-2)\times(N-2)(N−2)×(N−2) 격자에서 서로 변을 공유하지 않는 칸은 최대 aaa개이다. 행마다 진행 방향을 바꾸어 모든 내부 칸을 지나는 뱀 모양 경로를 생각하면, 이 경로에서 이웃한 칸을 동시에 고를 수 없으므로 aaa개 이하이다. 체스판의 더 큰 색을 고르면 aaa개를 얻을 수 있다. N=2N=2N=2일 때 내부는 비어 있고 a=0a=0a=0이다.

양 끝이 선택된 내부 칸인 변의 수를 eIe_IeI​라고 하자. 각 변에서 끝점 하나씩을 제거하면 적어도 u−eIu-e_Iu−eI​개의 서로 인접하지 않는 내부 칸이 남으므로 u−eI≤au-e_I\leq au−eI​≤a이다. 또한 eI≤ee_I\leq eeI​≤e이므로

F≤3s+a−c−2e+eI≤3s+aF\leq3s+a-c-2e+e_I\leq3s+aF≤3s+a−c−2e+eI​≤3s+a

라는 상한을 얻는다.

먼저 NNN이 짝수인 경우를 보자. 격자를 서로 겹치지 않는 2×22\times22×2 정사각형들로 나눈다. 한 정사각형에 선택한 칸이 xxx개 있으면, 그 정사각형의 네 변 중 서로 다른 성별이 만나는 변은 최대 2min⁡(x,4−x)2\min(x,4-x)2min(x,4−x)개이다. 따라서 같은 성별을 잇는 변은 적어도 ∣4−2x∣|4-2x|∣4−2x∣개이다. 이를 모든 정사각형에 대해 더하면 전체 격자에 같은 성별을 잇는 변이 적어도 N2−2sN^2-2sN2−2s개 있어야 한다. 전체 변이 2N(N−1)2N(N-1)2N(N−1)개이므로

F≤2s+N(N−2)F\leq2s+N(N-2)F≤2s+N(N−2)

이다.

짝수 NNN에서 체스판의 각 색에는 차수 444인 칸이 aaa개, 차수 333인 칸이 2N−42N-42N−4개, 차수 222인 칸이 222개 있다. 차수가 큰 칸부터 선택하면 그 합은

min⁡(4s, 3s+a, 2s+N(N−2))\min\bigl(4s,\ 3s+a,\ 2s+N(N-2)\bigr)min(4s, 3s+a, 2s+N(N−2))

이다. 앞에서 구한 세 상한 중 작은 값을 달성하므로 최적이다.

이제 NNN이 홀수인 경우를 보자. m=(N2−1)/2m=(N^2-1)/2m=(N2−1)/2라고 하면 s≤ms\leq ms≤m이다. F=3s+aF=3s+aF=3s+a가 성립하려면 앞의 부등식에서 c+2e−eI=0c+2e-e_I=0c+2e−eI​=0이어야 한다. eI≤ee_I\leq eeI​≤e이므로 c=e=0c=e=0c=e=0이고, 따라서 u=au=au=a이다.

내부 격자의 칸 수는 2a−12a-12a−1이다. 이 내부를 지나는 뱀 모양 경로에서 서로 인접하지 않는 aaa개 칸을 고르는 방법은 첫 칸부터 하나씩 건너뛰며 고르는 방법뿐이다. 따라서 내부의 최대 독립집합은 내부 모서리를 포함하는 체스판 색 전체로 유일하다. 이 색은 바깥 격자의 네 모서리와도 같은 색이다.

이 내부 칸들을 모두 선택했다면 반대 색인 테두리 칸은 선택한 내부 칸과 인접한다. e=0e=0e=0이므로 그러한 칸은 추가할 수 없고, c=0c=0c=0이므로 모서리도 추가할 수 없다. 추가할 수 있는 칸은 같은 색인 모서리 이외의 테두리 칸 2N−62N-62N−6개뿐이다. 따라서 F=3s+aF=3s+aF=3s+a이면 s≤a+2N−6=m−3s\leq a+2N-6=m-3s≤a+2N−6=m−3이어야 한다. 즉, s≥m−2s\geq m-2s≥m−2인 경우에는 정수인 FFF에 대해

F≤3s+a−1F\leq3s+a-1F≤3s+a−1

이 성립한다.

네 모서리를 포함하는 색에는 차수 4,3,24,3,24,3,2인 칸이 각각 a,2N−6,4a,2N-6,4a,2N−6,4개 있다. 다른 색에는 각각 a−1,2N−2,0a-1,2N-2,0a−1,2N−2,0개 있다. 차수가 큰 칸부터 골랐을 때의 합을 비교하면 다음 상한들을 모두 달성한다.

  • 0≤s≤a0\leq s\leq a0≤s≤a이면 모서리를 포함하는 색에서 F=4sF=4sF=4s를 얻는다.
  • a<s≤m−3a<s\leq m-3a<s≤m−3이면 같은 색에서 F=3s+aF=3s+aF=3s+a를 얻는다.
  • s=m−2s=m-2s=m−2이면 어느 색에서든 F=3s+a−1F=3s+a-1F=3s+a−1을 얻는다.
  • s=m−1s=m-1s=m−1 또는 s=ms=ms=m이면 모서리를 포함하지 않는 색에서 F=3s+a−1F=3s+a-1F=3s+a을 얻는다.

N=3N=3N=3일 때 두 번째 구간은 비어 있으며 나머지 경우는 그대로 성립한다. 따라서 홀수인 경우에도 두 색의 후보 중 좋은 쪽이 모든 배치에 대한 상한을 달성하므로 최적이다.

−
1