NKOJ P1752 傳球遊戲 狀態壓縮

2021-08-22 15:12:40 字數 1619 閱讀 5642

n n

個人在做傳球的遊戲,編號為1−

n' role="presentation">1−n

1−n。

遊戲規則是這樣的:開始時球可以在任意一人手上,他可把球傳遞給其他人中的任意一位;下乙個人可以傳遞給未接過球的任意一人。

即球只能經過同乙個人一次,而且每次傳遞過程都有乙個代價;不同的人傳給不同的人的代價值之間沒有聯絡;

求當球經過所有

n n

個人後,整個過程的最小總代價是多少。

第一行為

n' role="presentation">n

n,表示共有

n n

個人(16

>=

n>=

2' role="presentation">16

>=

n>=216

>=

n>=

2);

以下為n

2 n

2的矩陣,第i+

1 i+1

行、第j

j列表示球從編號為

i' role="presentation">i

i的人傳遞到編號為

j j

的人所花費的代價,特別的有第i+

1' role="presentation">i+1

i+1行、第

i i

列為−1' role="presentation">−1−

1(因為球不能自己傳給自己),其他資料均為正整數(

<=

10000

<=

10000

)。

乙個數,為最小的代價總和。

這其實是一道很簡單的狀壓dp

d

p。f[

i][j

] f[i

][j]

表示在i i

的二進位制狀態下(

1' role="presentation">1

1表示已經傳過了),當前的球在

j j

號人手裡的最小代價總和。

考慮球從

j' role="presentation">jj傳到

k k

(k' role="presentation">k

k之前沒有傳過球): f[

i|(1

<<(k

−1))

][k]

=min

f[i]

[j]+

cost

[j][

k]f [i

|(

1<<(k

−1))

][k]

=min

f[i]

[j]+

cost

[j][

k]

**實現如下:

for(i=0;i

<=t;i++)

}for(i=1;i

<=n;i++)

for(i=0;i

<=t;i++)}}

}

NKOJ P1377 火燒赤壁

一道從初學以來一直沒有a掉的題 果然還是我太菜了 kono題面噠!曹操平定北方以後,公元208年,率領大軍南下,進攻劉表。他的人馬還沒有到荊州,劉表已經病死。他的兒子劉琮聽軍聲勢浩大,嚇破了膽,先派人求降了。孫權任命周瑜為都督,撥給他三萬水軍,叫他同劉備協力抵抗曹操。隆冬的十一月,天氣突然回暖,颳起...

17 5讀書季 開啟

曾記得,買書是最划算的投資,看書是付出最少,收穫最大的投資。5月讀書,勞動節開啟,讀書,高效能mysql 第3版 自從上班之後,慢慢的發現,自己的能力越來越弱,自己也越來越沒自信。很多事要做,但是卻不想做,回頭還是惡性迴圈。好久沒寫部落格,也不知道寫些什麼,csdn沒有私人部落格功能,所以我只好去1...

175 電路維修 bfs

達達是來自異世界的魔女,她在漫無目的地四處漂流的時候,遇到了善良的少女翰翰,從而被收留在地球上。翰翰的家裡有一輛飛行車。有一天飛行車的電路板突然出現了故障,導致無法啟動。電路板的整體結構是乙個r行c列的網格 r,c 500 如下圖所示。電路.png 每個格點都是電線的接點,每個格仔都包含乙個電子元件...