結果

問題 No.1225 I hate I hate Matrix Construction
コンテスト
ユーザー ID 21712
提出日時 2026-06-04 14:01:10
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
AC  
実行時間 3 ms / 2,000 ms
コード長 1,654 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 15,639 ms
コンパイル使用メモリ 288,096 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-06-04 14:01:27
合計ジャッジ時間 16,622 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_1
純コード判定待ち
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 35
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"

func main() {
	var n int
	Scan(&n)
	sc := make([]int, 3)
	for i := 0; i < n; i++ {
		var s int
		Scan(&s)
		sc[s]++
	}
	tc := make([]int, 3)
	for i := 0; i < n; i++ {
		var t int
		Scan(&t)
		tc[t]++
	}
	
	switch {
		case sc[2] > 0 && tc[2] > 0:
			Println(n*(sc[2]+tc[2])-sc[2]*tc[2])
		case sc[2] > 0:
			Println(n*sc[2]+sc[1])
		case tc[2] > 0:
			Println(n*tc[2]+tc[1])
		default:
			Println(max(sc[1],tc[1]))
	}
}

/*
考察

Si=0となっているi行目は論理和0なので全部0
Si=2となっているi行目は論理積1なので全部1 
Tj=0となっているj列目は論理和0なので全部0
Tj=2となっているj列目は論理積1なので全部1 

Si=1がある場合
  ・Tjに2があるなら条件をすでに満たしている
  ・Tjに2がない場合はTj=1のとこと適当に
  ・Tjに1も2もないケースは矛盾するので存在しない

Tj=1がある場合
  ・Siに2があるなら条件をすでに満たしている
  ・Siに2がない場合はSi=1のとこと適当に
  ・Siに1も2もないケースは矛盾するので存在しない

Si,Tjのどちらにも2が存在する場合
 N * (count2(S) + count2(T)) - count2(S) * count2(T)
 が答え

Siにのみ2が存在する場合
 N * count2(S) + count1(S)
 が答え

Tjにのみ2が存在する場合
  N * count2(T) + count1(T)
  が答え

Si,Tjどちらにも2が存在しない場合
 max(count1(S), count1(T))
 が答え
  貪欲にペアを作っていくとmin(count1(S),count1(T))ができて
  Si,Tjが1でペアを作れてないとこはテキトーなとこを1に変更してけばいい
  

*/
0