中世紀劍士

這個題目很有趣

 

 

n個人決鬥,兩兩之間有強弱關係,強弱關係不傳遞,例如a>b,b>c,c>a。n個劍士圍成一個圈,一次抽籤,抽中的人和他右邊的人決鬥,輸了的人出圈。現在問是否存在一種決鬥方式讓第k個人生出,計算可能勝出的的人數和方案。

 

這個題目讓我想起了圍成一個圈的猴子的題目,那個題目是約瑟夫問題。

 

和這個不一樣。

 

這個題目:一個人要勝出,則要勝了所有右邊的人,同時也要勝出左邊的人。因爲是圍成一個圈,所以該人勝出的話,最終肯定是自己跟自己相遇。那麼,這種情況下,把圈展開成一個鏈,將該鏈延長一倍,如果i和i+n可以相遇,則說明i可以勝出。i人向右決鬥,i+n向左決鬥

 

如果兩個人可以相遇,用meet[i,j]來表示

meet[i,j]= true    if meet[i,k] and meet[k,j] and (e[i,k] or e[j,k])=true

               

[博客整理]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章