[COCI2017-2018#5] Planinarenje

最爱丁珰發表於2024-08-25

這道題目是二分圖博弈的板子

介紹一下二分圖博弈:

image

設兩部的節點分別為\(x_1,x_2,...,x_n\)\(y_1,y_2,...,y_m\),先手選擇了\(x_i\)這個節點,則先手必勝當且僅當\(x_i\)是最大匹配的必須點(也就是說少了\(x_i\)的話最大匹配數會減少)

證明:

任選一個最大匹配,則\(x_i\)為匹配點,先手的策略是每次都選擇\(x_i\)對應的匹配點\(y\);在後手選擇的時候,無論如何都不會選擇到當前匹配下的非匹配的\(x\),這是因為如果選擇到了,比如說\(x_1-y_1-x_2-y_2-···-x_k\),其中\(x_k\)不是當前匹配下的匹配點,那麼我們可以讓\(y_1\)匹配\(x_2\)\(y_2\)匹配\(x_3\),···,\(y_{k-1}\)匹配\(x_k\)從而獲得一個匹配數不變的匹配而且不包含\(x_i\),這與\(x_i\)為必須點矛盾,所以先手必勝

如果說先手選擇了非必須點\(x_i\),那麼任選一個不包含\(x_i\)的最大匹配,先手走到的\(y\)一定是匹配點(否則存在增廣路);進一步由在當前匹配的情況下從\(x_i\)出發不存在增廣路可知,後手策略為每次選擇當前匹配下\(y\)的匹配點\(x\)即可,所以先手必敗

至於尋找必須點,洛谷題解給了幾種方法;我想到了一種,先隨便找出一個最大匹配,然後列舉匹配點\(x\),設其匹配點為\(y\),那麼我們考慮是否存在非匹配點\(x^{'}\)使得\(y\)\(x^{'}\)之間有邊,如果有的話就說明\(x\)不是匹配點(應該是正確的,但是還沒有驗證,正確性基於交錯樹分析吧)