2009年9月3日 星期四

PKU 3740 Easy Finding

POJ八月份月賽的題目。
大意是求一個可以cover所有columns exactly一次的rows subset。

做法是枚舉所有可能性。
設現有列,則任意列的子集可以由 bit 的來表達。
可想而知,對於一個列子集,它的狀態轉移必然從子集判斷,其中。(即只有一bit相差)

這道題本來不難,唯數據數量太大,需要把300行的數據壓縮成50個64位元整數,而且只要的狀態無效則無須考慮其轉移狀態,因為導出狀態必然也是無效。

至於如何從考慮狀態?我用的是highest bit。另一種有效的方法是以gray code枚舉。

沒有留言: