狠狠撸
Submit Search
搁鲍笔颁2017:尝解説
?
0 likes
?
171 views
Takumi Yamashita
Follow
L
Read less
Read more
1 of 6
Download now
Download to read offline
More Related Content
搁鲍笔颁2017:尝解説
1.
Problem L :
Select Sets 作者@dohatsutsu
2.
問題概要 整数の集合がN個あるので、その中から3つ以上の集合を選ぶとき、 選んだ集合たちの和集合と積集合、それぞれの要素数の積は最大値でいくつになるだ ろうか?
3.
考察 選んだ集合の積集合をxと決め打ちした場合、 N個の集合の中から、xを部分集合にもつ集合を貪欲的にすべて選択すればよい。 xを2^K通り決め打ちして貪欲を行うと O( 2^K
* N )になる。 ※ ここでK は、N個の集合の和集合の要素数とする。 余談ですが、少し工夫を行うと O( 3^K ) にできます。 しかし、これでもTLEになってしまいます。
4.
解法 bitDPで解きます。 int dp[bit]=N個の集合の中から、bitを部分集合にもつものたちの和集合 set<int> dp_id[bit]
= N個の集合の中から、bitを部分集合にもつものたちの番号を格納 したもの。 ( ただし、3つ以上ある場合は、適当な3つだけ入れるようにする) 漸化式は次のような形になります。 dp[bit] = dp[ bit ? {1} ] ? dp[ bit ? {2} ] ? … ? dp[ bit ? {K} ] O(2^K * K)
5.
結果 ● First Submit ○
online btklatte 3h37min ● First Accept ○ online sigma425さん 3h38min ● Success Rate ○ 50 % ( 4/8)
6.
テスター time code size
( line ) @dohatsutsu 0.96s 60 @haji149 0.88s 51 @kzyKT_M 1.21s 36 @Gacho_0716 3.87s 51
Download