[CF 306E]Levko and Game題解翻譯

題解翻譯

首先我們判斷Levko是否能贏

把所有可改變權值的道路權值都改成r[i],然後從以s1,s2爲起點做兩次Dijkstra算法。令d1[i]爲s1到i的距離,d2[i]爲s2到i的距離。考慮一條連接a和b,可以改變權值的道路。如果d1[a]<d2[a],我們就將該道路的權值設爲l[i],然後重新做兩次Dijkstra。我們不斷進行這一過程,直到不再有道路改變權值。 

如果最終d1[f]<d2[f]那麼Levko就贏了。

如果我們將上面的條件d1[a]<d2[a]改成d1[a]<=d2[a],我們就可以判斷Levko是否能以平局結束。

證明

我們把Levko能改變權值的道路叫做“邊”。當進行Dijkstra算法時,我們不僅使用了邊,也使用了所有道路。

1.

我們證明,如果存在讓Levko獲勝的一組邊權值,那麼存在一組邊權值,使得Levko獲勝,而且所有邊權值爲l[i]或r[i]。考慮對於兩名玩家的最短路。

如果僅有Levko走一條從a到b的邊,我們可以將其權值設爲l[i]。證明:必有d1[a]<d2[a],因爲Levko走到了這裏然後獲勝。這一條件在改變權值後仍然滿足。如果Zenyk走了這條邊,他就輸了,因爲d1[f]<=d1[a]+d(a,b)+d(b,f)<d2[a]+d(a,b)+d(b,f)=d2[f]。如果Zenyk不走這條邊,他也輸了,因爲Levko的最短路變得更短(d(x,y)代表從x到y的最短路)。

如果僅有Zenyk走從a到b的邊,我們可以將其權值設爲r[i]。證明:Levko的最短路不變,而Zenyk的最短路只會變大(也可能不變)。

如果沒有人走這條邊,我們就將其權值設爲r[i]。證明:兩人的最短路均不變。

如果兩人都走了這條邊,我們可以將其權值設爲l[i]。證明:兩人的最短路都減少了(原先權值-l[i])。

在所有這種操作之後,Levko仍然獲勝,而且所有邊的權值變成了l[i]或r[i]。

2.

考慮算法的結果。在所有操作結束後,如果一條邊的權值爲l[i],我們就稱之爲“好的”,否則若爲r[i],就稱之爲“壞的”。

(a)

我們證明在所有操作結束後,對所有好邊(a,b)有d1[a]<d2[a]。

如果對於邊(a1,b1)有d1[a1]<d2[a1],而在修改邊(a2,b2)的權值後這一不等式不再成立。我們有d1[a1]>=d2[a1],d1[a2]<d2[a2]。我們只改一條邊的權值,而s2到f的最短路變得更短,這就意味着邊(a2,b2)在該最短路上。d2[a1]=d2[a2]+d(a2,b2)+d(b2,a1)>d1[a2]+d(a2,b2)+d(b2,a1)>=d1[a1]。

矛盾。

(譯者注:不知道這裏想表達什麼……如果(a1,b1)是好邊,那它一定在s1~f的最短路上,那麼討論幾種操作,稍有常識的人都會看出修改(a2,b2)是阻擋不了結論成立的)

(b)

我們證明在所有操作結束後,對所有壞邊(a,b)有d1[a]>=d2[a]。證明是:如果結論不成立,我們就能繼續算法。

(c)

我們證明如果對某條邊有d1[a]<d2[a]成立,但我們在一次迭代中未處理這條邊(處理了另外一條邊),那麼該條件在此次迭代後依然成立。證明同(a).

(d)

我們證明如果好邊的任意子集滿足權值等於l[i]和d1[a]<d2[a],那麼我們在把所有好邊的權值都變成l[i]後,這一結論仍然成立。證明是:模擬算法的所有操作,同時使用(c)。

3.

我們證明對所有邊權(不一定僅僅是l[i]或r[i]),所有壞邊(a,b)都有d1[a]>=d2[a]成立。

假設我們有這樣一條邊。考慮s1到該邊起點的最短路。如果該路徑上存在壞邊(a1,b1),那麼必然滿足不等式d1[a1]<d2[a1]。考慮這些壞邊中的第一條(a,b)。那麼從s1到a的最短路不包含任何壞邊。考慮另一個問題,其中m和我們的問題相等,但終點在a。那麼好邊和壞邊也將相同。我們像在1中一樣修改所有邊的權值。注意到所有壞邊的權值都爲r[i]。所以僅有好邊才能滿足l[i]和d1[a1]<d2[a1]。由(d),我們可以將所有好邊的權值設爲l[i],而且滿足d1[a1]<d2[a1]。這和這條邊是壞邊矛盾。

(譯者注:不知道這是什麼意思……或許作者的本意是把終點從a開始一步一步挪到f,同時保持結論成立?)

4.

這意味着如果Levko走任意一條壞邊,他就輸了。所以我們可以將所有這樣的邊權設爲r[i]。所以我們可以將一些好邊的邊權設爲l[i]。由(d),如果滿足d1[f]<d2[f],如果我們將所有好邊的邊權設爲l[i],該等式仍然成立。

5.

在判斷Levko是否能平局時,結論仍然成立。
發佈了53 篇原創文章 · 獲贊 17 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章