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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

网路流24题

發布時間:2024/8/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网路流24题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

決心去做好每一道網絡流24題,去理解最大流、最小費用流、最小割、……

好好去體驗吧,開題!


開始按順序來寫了。

?

太空飛行計劃問題【網絡流24題】【最小割】

? 這道題的精髓在于如果割哪個邊,那么最后deep[]會停留在它前面的一個點,那么就可以知道被安排的是哪個點了。

? 還要強調一點,這個時候千萬不能使用判斷邊的流量和容量來看,只能去判斷割點的位置,不然一定會出現偏大或者偏小的情況。

?

最小路徑覆蓋問題【網路流24題】【最大流+題意+建邊思路】

? 精髓就是建邊的思想,只要想明白怎么建邊的話,輸入和輸出都是很容易的。

? 同時這道題可以說是這道題的簡化版了,這道題就是題意太難理解了,但是說的通俗易懂一些就是,我們最少用幾條鏈,可以覆蓋完所有的點?

?

魔術球問題【網絡流24題】【最大流Dinic+隱式圖推理+拆點建邊】

? 這是我的第一道隱式圖的網絡流建邊了,因為N最大只有50,所以我們主要是利用了這個原理“最小邊覆蓋 = 目前的點的總數 - 最大匹配”(有向圖的性質之一),然后就能去推這個題了。當然,拆點的方式跟上一題是一樣的,不難的。

?

圓桌問題【網絡流24題】【最大流Dinic】

? 這道題感覺上就是不難了,甚至猜測到是否可以去使用二分匹配來寫這道題,那么就由自己看吧,說實話這道算是之前幾道中簡單的了。

?

最長不下降子序列問題【網絡流24題】【最大流+LIS+思路】

? 我的天,這道題真的是我在猜了,然后給我瞎推出來的然后膽子一大就交了,然后再特判一下,竟然A了,雖然不敢相信,但是求一個Hack。然后里面還有另外一整套網絡流24題的全套的鏈接,可以點進去學習(我只是拿來嘗試被Hack用的)。

?

試題庫問題【網絡流24題】【最大流】

? 這道題比之前的題要簡單一些(個人認為),所以具體就是自己去想怎么建邊即可,我就不摻和什么了,給大家鍛煉自己的機會。

?

方格取數問題【網絡流24題】【最大流+最小割+點覆蓋模型】

? 這道題用到的最小割的思想,的確是有點難想,就是要將求有限制的最大值問題轉換成總和-最小割的方式來解決問題。

??我們將點分為黑白點,其中,黑點的周圍都是白點,同樣的,白點的周圍的點都是黑點,我們利用這樣的方式來解這個問題我們從源點鏈接到黑點邊容量為權值的邊,在又白點鏈接到匯點,為邊容量為點權值的邊,然后對于每個黑點,鏈接上每個白點,邊權為INF,這樣子,我們只需要去求一個最小割即可,我們利用全體點權之和再減去最小割的量得到的就是最后我們需要的最大值了。

?

餐巾計劃問題【網絡流24題】【最大流最小費用】

??一道普通的最大流最小費用的題,我們需要考慮的是這樣的情況:第i天的舊餐巾我們該怎么處理?我們知道可以退后m天去快洗,然后在第i+m天再次使用它花費f元,另外的方法就是在推后n天去慢洗,花費的s元,但是我們要是遇到剛好那天在這段區間內的怎么辦,我們不如就加上一組無條件推后一天的情況。

? 我們就以這樣的想法去思考,然后建上對應的邊即可。

?

軟件補丁問題【網絡流24題】【最短路+狀態壓縮】

? 這是一道假的網絡流的題目吧,我覺得是跑一遍SPFA即可。我們從滿狀態(全都是病毒)向0狀態(病毒都修復完了)去跑,然后去取最段路即可,如果最后終點的值還是INF,那么就是說明它還是沒有跑到終點的辦法。

?

數字梯形問題【網絡流24題】【最大流最小費用求最大費用】

? 挺好的一道題,做這道題一定要找到一個好的測評機,否則,會虛假的過了這道題。

? 然后講一下這道超級有意思的網絡流最大費用,我們要跑最大費用,用SPFA直接跑?當然是不行的,我們需要改進,這里就是用到了把權值賦為負值,然后再去跑最小費用的思維去處理這個問題。然后關于建邊,就要自己去思考了,其實并不是特別的難,可以思考出來的。

?

負載平衡問題【網絡流24題】【最大流最小費用】

? 注意是環形。

??一道費用流,是因為移動每一個貨物可以看成是挪動一次代價為1,這樣子想就可以建邊了,從源點出發到每個節點是每個節點的擁有數,而每個節點到匯點的容量是那個平均數。然后對于每個相鄰的節點連接上邊并且單位流的代價是1。

?

運輸問題【網絡流24題】【最大流最小費用+最大費用】

? 這是一道簡單的模板題啦,在跑最大費用的時候得去考慮將每條邊賦為負值,然后再跑最小費用就行了。

?

騎士共存問題【網絡流24題】【最大流最小割+最大獨立集】

??我聯想到的解法是之前做的方格取數問題,都是用到了一樣的思路,我們還是一樣將點分為兩種類型,目的在于區分能相互攻擊的分在兩邊,一邊保證了同奇偶,就是為了保證各側的騎士們都是可以和平共處的騎士們,因為走的圖是“日”,所以,保證同奇偶即可。

? 我們同樣的,從偶數點去匹配對應的奇數點,讓它們互相沖突的只能存在一個,也就是去計算最多的騎士可以保留的個數。相互沖突的話,只能留其一了。這樣子就是最小割的問題了,可以自己思考,也可以看我后面的證明

我們先簡化模型,原題經我們分析相當于有一個二分圖(設這兩個點集分別為X,Y),我們要在這個二分圖選出最多的點,使這些點中任意兩個點之間沒有邊。

而我們要證明的即為,選出最多的點數=原點數-網絡最大流

又最大流最小割定理,網絡最大流=將源點匯點分開最小割的容量

所以我們將證明轉換為了,選出最多點數=原點數-最小割

而我們知道,一個割就是將所有點分割成S和T兩個集合,其中s∈S,t∈T

我們不妨假設S∪X即是我們在X中選的點,T∪Y即是我們在Y中選的點

顯而易見的,S∪Y即是我們在X中不選的點,T∪X即是我們在Y中不選的點

那我們建inf的邊意義即在我們強制了不能同時選的兩點必在同一個集合(即為一個不選一個選),因為如果它們不在同一個集合中,割的大小就超過了inf,肯定不會成為最小割

而我們建1的邊的意義即在如果X中的點不在S中,或者Y中的點不在T中,就會損失一個點,而損失當然越小越好了

所以可以得到選出最多點數=原點數-最小割,而又由最大流最小割定理,最小割=最大流,就可以跑最大流了。證畢。

這也就是二分圖的最大獨立集

?

深海機器人問題【網絡流24題】【最大流最小費用】

? 這道題的建邊倒是不難,但是要想到的是要去建一個從一點到另一點一個流量為INF但是費用為0的邊,而有價值的邊的時候,我們建立的邊就是流量為1,并且費用為負價值的邊。

?

火星探險問題【網絡流24題】【最大流最小費用】

? 處理好東西與南北的關系,然后分別建立單位流的負權價值邊和INF流的0價值邊,當然,遇到那些不可建邊的點還要判斷一下,總而言之,跟深海機器人問題解題思路差不多。

?

汽車加油行駛問題【網絡流24題】【單流的最小費用流——最段路SPFA】

? 若要看成網絡流來做的話就是單位流的最小費用流,還不如直接去寫SPFA呢。

? 但是除了SPFA的做法以外,去寫BFS的方式也可以做這道題。

?

[CTSC1999]家園【網絡流24題】【最大流+分層圖】

我們知道0是起始點,-1是終點,但是由于-1的特殊,我把0看作了N+1,-1看作了N+2來做,那么我們就該去跑時間戳了,每一個時間,飛船就會像公交汽車那樣子往后走一格,我們只要讓飛船不斷的往下走下去即可,但是可能會存在把人放下來讓他原地等待下一個別的航班的情況,所以,我們還要對于每個點建立一個原地等待的邊,接下去,看到飛船每個時刻都會飛向下一個地點,那么對于該時刻,我們建立這樣子的,對于下一個時刻的對應邊,容量就是飛船的載客量。

? 這就是分層圖的思想了。

??有個細節,就是對于源點和匯點,我們不把它隨時間去變化。

?

最長k可重區間集問題【網絡流24題】【最大流最小費用】

? 我們開始的時候,對所有的點這樣考慮,S -> 1 -> 2 -> 3 -> …… -> i -> i+1 -> …… -> T每條邊的容量都是K(其實只需要保證1是K后面自動維護的),然后考慮,對于每個開區間,我們完全不需要去考慮對于端點,因為這是開區間,不考慮端點是否會被重復賦值。所以,我們可以這樣子去做,對于端點,我們從L端向R端直接建立一條流量為1、邊權為區間長度的相反數的流量邊。

??這個思緒的理解,相當于是替換的思想了,我們把原來的邊拿后面更優的邊去替換掉,然后用一個類似于差分的思想,在區間內的話,就會外圍更好的邊去流,不斷的就可以去選取到更優的價值(最小費用的原理)。

?

最長k可重線段集問題【網絡流24題】【最大流最小費用】

? 關于線段的投影的重疊問題,這道題給了一個很好的說明,我們可以想到這樣的有豎直的線段、以及其他各種普通的線段。由于是開線段,那么我們就考慮這樣一個問題,這是一條豎直的線段,譬如說是x=5這樣子的線段,再遇到一條(5, 7)的投影在x上的開區間怎么辦?怎么去限流?我們依然是要去限制流出端,但是這里的流出端一個是5,另一個也是5,但是很明顯不一樣的誒,一個就是在5上,另一個卻是不經過5的。

? 我們得去處理這個問題,怎么處理呢,我們對于投影在x軸上的區間這樣處理:(l, r)變換成(l<<1|1, r<<1)。這樣子的想法是很有深度的,一下子就幫我們處理完了拆點以及這樣子的流出端的問題。

?

航空路線問題【網絡流24題】【最大流最小費用】

??這道題一定要去拆點,避免有個點走了兩次,然后再考慮鏈接邊,要從低的連接上高的,對于可以鏈接上的邊,我們建立流為1且費用為-1的邊權。

??然后,就是輸出點的問題了,我們可以去跑兩次dfs(),第一次我們跑升序的,當然,對于1號點和N號點,我們特殊處理,然后第二次我們跑降序的輸出,注意考慮流量的問題。

?

總結

以上是生活随笔為你收集整理的网路流24题的全部內容,希望文章能夠幫你解決所遇到的問題。

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