SRM442題解

rng_58出的神數學題……爆零給跪……不過發現TC在做練習賽的時候自己可以無限制地cha自己……


250pts:

題意:有一堆N個石子,雙方輪流取,每次只能取4^k個(k爲非負整數),無法操作者敗。求是否先手必勝。

分析:這題有神結論……先說一種錯誤做法:把N化爲四進制,對四進制數的每位求和,如果和爲奇數這先手必勝。

這個做法是錯的,因爲一次取不一定要取高位。舉個例子,N=8,化爲四進製爲20。但此時是先手必勝的,因爲先手可以取1個,之後無論後手怎麼操作都必敗。

這題的神結論就是:先手必敗的充要條件是,N除以5餘0或2。證明如下:

1、證明任意必勝態都能在一步之內到達一個必敗態。必勝態爲N%5=1,3,4,而4^k%5=1或4,所以N-4^k%5=0,2。

2、證明任意必敗態都無法在一步之內到達另一個必敗態。假設存在必敗態x和y(x,y%5=0,2)且存在非負整數k'使得x-4^k'%5=y%5。可以發現等式是無法成立的。


600pts:

題意:N張牌,正反都有數字。所有正面和所有反面的數字各構成一個排列。將牌排成一排,每張牌可以正面朝上或者反面朝上,這樣可以構成一個序列。給定N張牌正面和反面的數字,求:所有可能的序列方案數。N50

比如:3張牌,正面分別爲123,反面分別爲132一共有12種序列:
123132213231312321133313331122212221

分析:

假設N足夠小,可以讓我們枚舉哪些牌正面朝上。那麼會發現,可能會有一些數字重複出現,而且重複出現次數最多爲2。記重複出現的數字個數爲K,那麼這些牌的不同排列數爲:N!/2^K,即多重集的排列數。

現在我們要求的就是,對於任意合法的K,在多少種牌的正反方案中有K個數出現了2次。

我們把所有牌按正面數值1N的順序擺成一排。這樣我們就可以把反面數值視爲一個置換,把這張牌反面就相當於置換這一個位置。可以發現,置換的不同循環之間是不影響的。

現在我們就來考慮一個循環。記這個循環的長度爲L,假設出現兩次的數的個數爲K。顯然有K≤L/2。

……然後呢?似乎不太好求啊。嘗試轉換思路,比如……
建立圖論模型。
將循環的每個元素視爲一個節點,每個元素連向元素的值對應的元素的節點。
有了這個圖可以幹什麼呢?
一張牌可以視爲其中的一條邊,牌是否反面朝上相當於邊是否反向。牌的數字也即邊指向的節點對應元素的值。
那麼出現兩次的數也即入度爲2的節點對應元素。而且還可以發現,入度爲2的節點和入度爲0的節點個數相等,並且交替出現。
那麼我們就可以得出一個計算長度爲L的循環中有K個數出現兩次的方案數的公式:2*C(L,2K)。K=0時方案數爲1。
注意剛纔只考慮了牌的正反,還沒有考慮排列。剩下的部分就不難了。可以用揹包求出對於整個序列出現兩次的數爲K個的方案數,再用多重集的排列公式計算求和。也可以處理出每個循環內部出現兩次的數爲任意個的方案數,然後把一個循環視爲同一種元素,還是一個多重集排列的問題。

900pts:
還不會……官網題解寫的是DP+結論……

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