POJ八月份月賽的題目。
大意是求一個可以cover所有columns exactly一次的rows subset。
做法是枚舉所有可能性。
設現有

列,則任意列的子集可以由

bit 的

來表達。
可想而知,對於一個列子集

,它的狀態轉移必然從子集

判斷,其中

。(即只有一bit相差)
這道題本來不難,唯數據數量太大,需要把300行的數據壓縮成50個64位元整數,而且只要

的狀態無效則無須考慮其轉移狀態

,因為導出狀態

必然也是無效。
至於如何從

考慮狀態

?我用的是highest bit。另一種有效的方法是以gray code枚舉。
沒有留言:
張貼留言