結果

問題 No.519 アイドルユニット
ユーザー horiesiniti
提出日時 2017-05-11 16:08:53
言語 Ruby
(3.4.1)
結果
AC  
実行時間 726 ms / 1,000 ms
コード長 605 bytes
コンパイル時間 182 ms
コンパイル使用メモリ 7,552 KB
実行使用メモリ 16,896 KB
最終ジャッジ日時 2024-10-03 03:42:43
合計ジャッジ時間 9,554 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 34
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

n=gets.chomp.to_i
arr=[]
n.times{
	l=gets.chomp.split(" ").map{|e| e.to_i}
	arr<<l
}
dp=[]
30.times{
	dp<<{}
}
dp[0][0]=0
(n/2).times{|i|
	now1=i*2
	next1=i*2+2
	dp[now1].collect{|k1,v1|
		for j in i..(n-1) do
			u1=(1<<j)
			if (k1 & u1)!=0 then
				next
			end
			for k in (i+1)..(n-1) do
				u2=(1<<k)
			
				if (k1 & u2)!=0 then
					next
				end
				k2=(k1|u1)|u2
				v2=v1+arr[j][k]
				if dp[next1].has_key?(k2)==false then
					dp[next1][k2]=v2
				elsif dp[next1][k2]<v2 then
					dp[next1][k2]=v2
				end
			end
			break
		end
	}
}
ans=0
dp[n].collect{|k,v|
	if ans<v then
		ans=v
	end
}
p ans
0