2020 08 12 題目題解

2022-05-01 19:48:10 字數 3815 閱讀 5043

題目傳送門

給出乙個 \(n\) 個點的樹,問有多少個三元組 \((x,y,z)\) 滿足 \(x,y,z\) 兩兩之間距離相同。

\(n\le 10^5\)

不難想到乙個 dp 做法,我們可以設 \(f_\) 表示以 \(u\) 為根的子樹內距離 \(u\) 距離為 \(i\) 的點的個數, \(g_\) 表示以 \(u\) 為根的子樹內,二元組 \((x,y)\) 滿足 \(\text(x,\text(x,y))=\text(y,\text(x,y))=\text(u,\text(x,y))+i\) 的個數。

可以得到轉移式:

\[ans\gets \sum_g_f_+g_f_,s.t.\ \ v\in son_u

\]\[f_\gets 1,f_\gets f_,s.t. \ \ v\in son_u

\]\[g_\gets f_f_,g_\gets g_,s.t.\ \ v\in son_u

\]然後我們發現這個東西其實是 \(\theta(n^2)\) ,但是我們使用長鏈剖分就可以做到 \(\theta(n)\) 了。

**戳這裡開啟

題目傳送門

給出乙個 \(n\) 個點的樹,每次可以將一條邊連線的兩個點合為乙個點,新點的編號隨機成為兩個點編號中的乙個。問對於每個 \(i\) ,最後合完的點編號為 \(i\) 的概率。

\(1\le n\le 50\)

神題啊!不過為毛可以取模還非要卡精度啊?非常費解。。。

首先,我們可以發現如果我們欽點乙個點為剩下來的點,那麼,每次當該點與其它點合併的時候都只能保留該點。考慮 dp ,我們可以設 \(f_\) 表示以 \(u\) 為根的子樹內還剩 \(i\) 條邊且當前 \(u\) 的編號已經變為根的編號最後合併下來留下根的編號的概率(不要問我為什麼,我只能告訴你網上大部分資料已經刪除乾淨了,只能說懂得都懂),我們可以得到轉移式:

我們有轉移式: \(f_\gets \dfrac\times f_\) 。

這是因為以 \(v\) 為根的子樹裡面當刪到只有 \(i-1\) 條邊的時候我們的 \(u\) 已經被替換成了根的編號了,接著我們的 \(v\) 子樹繼續刪邊直至只剩下 \(j\) 條邊,然後合併 \(u,v\) ,而它有 \(\dfrac\) 的概率留下 \(u\) 的編號(即根的編號),然後我們繼續考慮 \(f_\) 。所以貢獻就是 \(\dfrac\times f_\) 。很顯然這種計算方法列舉了在多久合併 \((u\to v)\),所以不會算重。

我們有轉移式: \(f_\gets (size_v-i)\times f_\)

這是因為 \(u\to v\) 肯定需要刪掉,而它刪掉的時間卻並不固定,我們可以在刪掉 \(v\) 子樹內需要刪掉的邊的過程中刪掉該邊,與上面不同,我們並未確定 \((u\to v)\) 在多久合併,而它又有 \(size_v-i\) 種方法。同時我們發現此時 \(u\) 的編號並未變為根,所以在合併的時候我們並不關心誰會留下來,因為我們可以之後讓根侵占該點。所以貢獻即為 \((size_v-i)\times f_\) 。

但是我們還需要考慮如何合併兩棵子樹,可以得到轉移式:

\[f_\gets f_f_\binom\binom,s.t.\ \ v1,v2\in son_u

\]這是因為刪掉的邊可以隨意混合,保留的邊也可以。

最後的答案就是 \(\dfrac}\) 。

於是,我們就可以做到 \(\theta(n^4)\) 了。

**戳這裡開啟

題目傳送門

有 \(n\) 個黑幫,每個黑幫有一些人,這些人裡面有些有真金條,有些沒有金條,並且黑幫之間的關係構成了乙個競賽圖。然後黑幫之間發生了一些奇奇怪怪的交易,於是在時刻 \(i\) ,如果存在 \(u\to v\) 的邊,並且黑幫 \(u\) 中的 \((i\bmod )\) 有金條(不分真假),並且黑幫 \(v\) 中的 \((i\bmod)\) 沒有金條,那麼,黑幫 \(u\) 中的人就會憑空造出乙個假金條給黑幫 \(v\) 裡面那個人。

現在,在經歷了無限個時刻之後,黑幫們要去賣金條了,假金條可能賣得出去,真金條一定賣得出去,現在要從賣出金條最多的 \(a\) 個黑幫裡面隨機選 \(b\) 個,問有多少種可能選出的集合。

\(n\le 5000\),黑幫成員總和 \(\le 2\times 10^6\) 。

所以誰能告訴我這道題為什麼評分是 \(3400\) 啊?

首先不難看出:出題人是個屑 這是乙個強行二合一的題目,我們可以拆成兩個部分:

我們首先考慮解決第乙個問題,我們發現如果存在 \(i\equiv j\pmod\) 那麼黑幫 \(u\) 裡面的人 \(i\) 就可以給黑幫 \(v\) 裡面的人 \(j\) 假金條,具體證明可以使用裴蜀定理證明。

然後我們考慮強連通分量縮點,那麼,乙個強聯通分量所有 \(i\equiv j\pmod \) 的 \(j\) 都可以對 \(i\) 產生貢獻(如果 \(j\) 有金條的話)。於是我們只需要考慮強連通分量之間的關係,因為縮點之後的圖依舊是乙個競賽圖,於是我們可以考慮 topo 排序,然後你就發現每個連通分量只對後面的點產生貢獻,而且一定能夠產生貢獻。然後知道乙個強聯通分量的金條個數,那我們就可以知道每個黑幫的金條個數。

考慮第二個問題。我們發現,如果我們如果欽定某乙個黑幫恰好為第 \(a\) 個,我們就不會算重,於是我們直接統計一定比它大,以及可能比它大的黑幫個數即可,然後組合數算一下就好了。

**戳這裡開啟

題目傳送門

給出兩個長度為 \(n\) 的 \(01\) 串 \(a,b\) ,兩個串裡面 \(1\) 的個數都是 \(k\) ,我們把兩者位置為 \(1\) 的位置提出來,分別即為 \(a_,b_\),然後將兩個序列隨機排序 (\(\text\)),按 \(1\to k\) 的順序交換 \(a_\) 和 \(a_\),問最後 \(a\) 變為 \(b\) 的概率。

\(n\le 10^4\)

不管你信不信,空間可以開到 \(\theta(n^2)\)。

首先我們需要轉換一下題意:如果存在 \(i,j\) 使得 \(a_i=1\) 並且 \(b_j=1\) ,那麼我們就可以交換 \(a_i\) 和 \(a_j\) ,問操作 \(k\) 次後 \(a=b\) 的概率。

我們可以稱 \(a_i=1\wedge b_i=1\) 的點為「中間點」,\(a_i=1\wedge b_i=0\)的點為「初始點」,\(a_i=0\wedge b_i=1\) 的點為「終結點」。很顯然的是,我們可以通過交換初始點和中間點,再交換至終結點,那麼我們最後就可以滿足條件,於是,我們可以考慮設 \(f_\) 表示用了 \(i\) 個中間點, \(j\) 個初始點的合法方案數,我們可以得到轉移式:

\[f_=i\times j\times f_+j\times j\times f_

\]解釋一下,顯然從 \(f_\) 轉移過來其實就是加入乙個中間點,顯然可以加入在 \(j\) 個由中間點和初始點的鏈,同時,我們可以與已經加入的點進行交換,所以有 \(i\times j\) 種方法。後面那個顯然就是加入乙個初始點,而我們顯然可以新建乙個鏈,同時鏈也可以交換所以乘上 \(j\) ,然後同時我們還可以選擇乙個終結點與它結合,又可以乘上 \(j\) 。

然後我們最後可以考慮列舉有多少個中間點不用就可以算出答案,具體見**。

**戳這裡開啟

題目傳送門

給出乙個 \(n\) 個點的樹,以及常數 \(k\),每個點都帶有顏色,求最小的連通塊大小,使得該連通塊包含至少不同 \(k\) 種顏色。

\(n\le 10^4,k\le 5\)

我們發現這個 \(k\) 十分的小,於是,我們不難想到,這道題要麼是狀壓dp,要麼就是隨機化亂搞。但是這個 \(n\) 又這麼大,所以我們考慮後者。

我們可以考慮到,如果我們欽定選哪幾種顏色,那我們就可以用樹上狀壓dp解決這個問題,時間複雜度 \(\theta(tn4^k)\) ,其中 \(t\) 是嘗試的次數。

不過經過嘗試,似乎在隨機情況下,\(t=20\) 也可以通過。(倫敦霧

**戳這裡開啟

2020 08 12題目就要與眾不同

乙個數字影象是乙個二維離散訊號,利用希爾伯特曲線,可以將一副數字影象轉變為乙個一維離散訊號,這就使得對影象的處理變得更加容易。gch全域性顏色直方圖,是描述顏色特徵的最傳統的方式,缺陷,忽略了某種顏色在影象中的具體分布。也就是說,通過直方圖,可以了解某種顏色在影象中所佔的比例,但卻無法了解該顏色在影...

2020 12 1 題目題解

題目傳送門 joi 公司的某個實驗室中有著複雜的電路。電路由 n 個節點和 m 根細長的電阻組成。節點編號為 1 sim n 每個節點可設定為兩種電平之一 高電平或者低電平。每個電阻連線兩個節點,只有一端是高電平,另一端是低電平的電阻才會有電流流過。兩端都是高電平或者低電平的電阻不會有電流流過。試求...

每日知識點 20200812 String

string s1 new string lalala string s2 lalala 兩種構造方式,前一種會同時賦予乙個位址,後者則不會。判斷兩者是否 false。若要單純判斷兩者值相等可以用equals。boolean isempty 判斷字串內容是否為空 int length 返回字串長度 ...