日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【2018.10.2】Note of CXM

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【2018.10.2】Note of CXM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.有一張無向圖,現在要給每個點染上黑色或白色,最后每個點的染色代價是它與離這個點最近的不同色節點的距離。求最小代價。所有邊權$\geq 0$且互不相同。

分三種情況:

兩點都染了色:兩點都跟其它點算過最小距離了,不用管。

一點染了色:相當于擴展連通塊,染了色的點向沒染色的點擴展染色,顏色相同。

兩點都沒染色:兩點直接相連(且邊長是最短距離)。

?

2.題目大意同上,求得到最小代價的方案數。

0的邊兩邊的點有多少個子樹,方案數就累加上2的多少次方。

?

?

3.一張無向圖,給每條邊染兩種顏色之一,使每個度大于等于2的點都連接兩種顏色的邊。問能否做到。Yes或No。

首先光禿禿的偶環(奇數條邊)肯定無解(發芽就有解了),光禿禿的奇環(偶數條邊)肯定有解(不知道這個結論的可以跳過這題了)。

環?想到了樹。

可以先把這張圖取出$n-1$條邊,讓整張圖構成一棵樹,

我們知道,樹中只有三種邊:樹邊(圖中黑邊)、回邊(返祖邊)(圖中紅邊)、跨邊(有向圖特有)。

對于樹上任意的度$\ge 2$ 的點,它的兩邊染上不同的顏色即可,如果再有一條返祖邊連向它,這條新邊染什么顏色都可以,必定能滿足另一頭的要求。

但對于度為 $1$ 的點呢?根和葉子結點都是度為1的點,這時候我們就要跑這個環。

只有這個環本身(即不算發芽)有偶數個點且發芽的情況需要我們考慮是否有解。

其實這就是偶環上發芽的情況。如圖

那么發芽點在原環上的兩條相鄰邊就可以染成同色,然后把另一種顏色染到芽上。

但如果發的芽下面也有邊連向了入讀為1的邊呢?

如果新連出來的環還是偶環,好像依然不可行。

?

那什么情況下可行?如下。

只要偶環與奇環相套,至少就可以從發芽點把另一種顏色沿著芽流出去了。

結合這么一個知識:偶環套偶環=偶環

可得:只有整張圖只要存在純偶環(就是不與奇環相套的偶環)就無解,否則有解。

所以這是個結論題,以上都是推導,并非題解。

題解的話就再扯點沒用的(找純偶環的方法):去掉奇度點(它們是整張圖的芽,處于被動染色狀態,環上芽才是主動),把圖的剩余部分做Tarjan求無向圖強連通分量(MD準確地說是雙連通分量)。在每一個分量中任選一個起點,看是否存在經過偶數條邊回到起點的方案。如果存在,說明存在奇環,這個強連通分量滿足條件。如果所有的強連通分量都滿足條件,說明圖中不存在純偶環,有解。否則存在純偶環,無解。

?

4.有向圖,邊權只有0和1,求單源最短路。(線性算法)

我們都知道,廣搜時總是取出隊列中的第一個數。求最短路情況下,為了讓更新盡量有意義,我們當然希望先從隊列中取出(目前更新的)到起點距離盡量小的,這樣可以盡量多地更新它周圍點的最短路。

然后這題邊權只有0和1,我們甚至不用寫單調隊列,如果按照上述貪心取法,我們發現廣搜隊列中 前面一段的距離值 與 后面一段的距離值 的差值不超過1。

為什么呢?

因為我們要取出到起點距離盡量小的,所以總是會取距離值相對較小的。并且更新時邊權只會是0或1。

結合數學歸納法可知,

一開始隊列中只有起點,距離為0,隊列中距離值的差為0。

然后更新了周圍的點,有些點的距離值更新為0,有些點的距離值更新為1。

然后我們一直更新 距離值為0的點 的周圍的點,直到隊列中所有點的距離值都為1。

此時已經不存在未被更新過的到起點距離為0的點了(廣搜常識)。

此時隊列中所有點的距離值是1。

然后把1當成之前的0,接下來更新出的距離值2當成之前的1,就歸納為一樣的步驟了。

由此證明這樣做的廣搜隊列中 前面一段的距離值 與 后面一段的距離值 的差值不超過1

然后邊權還只有0和1,隊列操作比較簡單,把通過權值為0更新的點接到隊頭,通過權值為1更新的點放到隊尾即可。隊頭的點的距離值就是相對較小的。

?

拓展:有向圖,邊權只有0~20,求單源最短路。

把隊列分割成21個桶,每個桶依次存$x,x+1,...,x+20$這21個距離值。廣搜時不停取第一個桶中的點,把被該點更新距離的點 放到對應距離值的桶里。如果第一個桶中沒有點,就把所有桶存放的距離值上調至使第一個桶中有點。

易證點肯定有桶放。

?

5.每個點有一個(開采礦物的)費用,邊權依然只有0和1,求分別開采每個點的礦物時的最小費用。

?

6.執行k個操作,每個操作連接兩個點,問每個操作后圖中有多少條割邊。(LCT會超時)

邊雙連通(環)的情況下給圖縮點,這個圖會變成一個森林。森林之間的每條邊都是一條割邊。因此用兩個并查集維護,一個維護每個連通塊的點,另一個維護每個邊雙連通塊的點。

轉載于:https://www.cnblogs.com/scx2015noip-as-php/p/9737138.html

總結

以上是生活随笔為你收集整理的【2018.10.2】Note of CXM的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。