網路流專題練習Day2

2022-08-09 01:09:20 字數 4416 閱讀 6201

04/17

目前做了:7

由於目前六道都是1a感覺非常爽...

「狼愛上羊啊愛的瘋狂,誰讓他們真愛了一場;狼愛上羊啊並不荒唐,他們說有愛就有方向......」 orez聽到這首歌,心想:狼和羊如此和諧,為什麼不嘗試羊狼合養呢?說幹就幹! orez的羊狼圈可以看作乙個n*m個矩陣格仔,這個矩陣的邊緣已經裝上了籬笆。可是drake很快發現狼再怎麼也是狼,它們總是對羊垂涎三尺,那首歌只不過是乙個動人的傳說而已。所以orez決定在羊狼圈中再加入一些籬笆,還是要將羊狼分開來養。 通過仔細觀察,orez發現狼和羊都有屬於自己領地,若狼和羊們不能呆在自己的領地,那它們就會變得非常暴躁,不利於他們的成長。 orez想要新增籬笆的盡可能的短。當然這個籬笆首先得保證不能改變狼羊的所屬領地,再就是籬笆必須修築完整,也就是說必須修建在單位格仔的邊界上並且不能只修建一部分。

首先這道題的題意很顯然,就是讓我們用最少的籬笆數分開狼群和羊群再簡化,也就是用最少的邊切斷所有狼和羊的聯絡,這麼一來就是最小割問題了建立乙個源點連線所有的狼,所有的羊再向匯點各連一條邊,這些邊的容量都設為正無窮,表示不能切開

對於相鄰的格仔建立容量為1的邊,同一種群之間不能建邊,羊不需要建出邊

然後跑最大流就可以了

某公司估計市場在第i個月對某產品的需求量為ui,已知在第i月該產品的訂貨單價為di,上個月月底未銷完的單位產品要付存貯費用m,假定第一月月初的庫存量為零,第n月月底的庫存量也為零,問如何安排這n個月訂購計畫,才能使成本最低?每月月初訂購,訂購後產品立即到貨,進庫並**市場,於當月被售掉則不必付存貯費。假設倉庫容量為s。

和餐巾計畫問題幾乎一模一樣,需要改變的兩點乙個是從源點連向左邊的點的費用不再為0,而是為當天購買的費用因為這道題並不能重複利用只能提前購買第二個就是倉庫有容量(剛開始多想了認為當天用掉的商品也要計算在庫存內

這個只需要拆點就可以了

最小費用最大流

幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,但是為了照顧一下自己朋友的想法,他們也可以投和自己本來意願相反的票。我們定義一次投票的衝突數為好朋友之間發生衝突的總數加上和所有和自己本來意願發生衝突的人數。 我們的問題就是,每位小朋友應該怎樣投票,才能使衝突數最小?

建立乙個源點,連線所有意願為0的小朋友,建立匯點連線意願為1的小朋友,邊容量均為1在好朋友之間建立一條容量為1的邊然後這道題讓我們求的最小衝突數就是最小割了最大流跑一遍即可

乙個迴圈格就是乙個矩陣,其中所有元素為箭頭,指向相鄰四個格仔。每個元素有乙個座標(行,列),其中左上角元素座標為(0,0)。給定乙個起始位置(r,c)

,你可以沿著箭頭防線在格仔間行走。即如果(r,c)是乙個左箭頭,那麼走到(r,c-1);如果是右箭頭那麼走到(r,c+1);如果是上箭頭那麼走到(r-1,c);如果是下箭頭那麼走到(r+1,c);每一行和每一列都是迴圈的,即如果走出邊界,你會出現在另一側。

乙個完美的迴圈格是這樣定義的:對於任意乙個起始位置,你都可以i沿著箭頭最終回到起始位置。如果乙個迴圈格不滿足完美,你可以隨意修改任意乙個元素的箭頭直到完美。給定乙個迴圈格,你需要計算最少需要修改多少個元素使其完美。

這道題的突破口在於挖掘完美迴圈格的性質:每個格仔的入度都為1!(出度自然為1)然後做法就和混合圖的尤拉迴路判定一樣了源點連線入度<1的點,容量為1-b[i],匯點連線入度》1的點,容量為b[i]-1

對於乙個箭頭我們將它可以轉向的點向它原來的點連一條容量為1費用為1的邊

最小費用最大流求解

題意很明顯,只需要將每個人和每個人的床看做二分圖,然後跑最大流就可以了

每個在校的學生的床可以用,床與t連一條容量為1的邊每個外校來的或者在校的不回去的學生要睡,s與學生連一條容量為1的邊然後每個人和認識的人的床連一條邊

自己和自己的床連一條邊即可

最近房地產商gdoi(group of dumbbells or idiots)從noi(nuts old idiots)手中得到了一塊開發土地。據了解,這塊土地是一塊矩形的區域,可以縱橫劃分為n×m塊小區域。gdoi要求將這些區域分為商業區和工業區來開發。根據不同的地形環境,每塊小區域建造商業區和工業區能取得不同的經濟價值。更具體點,對於第i行第j列的區域,建造商業區將得到aij收益,建造工業區將得到bij收益。另外不同的區域連在一起可以得到額外的收益,即如果區域(i,j)相鄰(相鄰是指兩個格仔有公共邊)有k塊(顯然k不超過4)型別不同於(i,j)的區域,則這塊區域能增加k×cij收益。經過tiger.s教授的勘察,收益矩陣a,b,c都已經知道了。你能幫gdoi求出乙個收益最大的方案麼?

這道題與以前做的最小割題目相比有所不同因為我們可以很顯然地將點與s,t連邊的想法想出來但是型別不同的區域能獲得收益這一點導致不知道應該怎麼連邊..割開了反而能獲得收益?容量為負?什麼啊...

解法很巧妙,由於矩形中的格仔根據其橫縱座標的奇偶性可以分為兩類格仔

每一類與另一類的格仔之間才有連邊

所以我們可以分兩類考慮,對於一類格仔,s代表工業區,t代表商業區

對於另一類格仔,s代表商業區,t代表工業區

此時只有在同一側的格仔才能獲得收益了,於是轉化成了我們熟悉的最小割

再次運用到了源點匯點不止單一含義的思想

好好體會

高一一班的座位表是個n*m的矩陣,經過乙個學期的相處,每個同學和前後左右相鄰的同學互相成為了好朋友。這學期要分文理科了,每個同學對於選擇文科與理科有著自己的喜悅值,而一對好朋友如果能同時選文科或者理科,那麼他們又將收穫一些喜悅值。作為計算機競賽教練的scp大老闆,想知道如何分配可以使得全班的喜悅值總和最大。

這道題不管是建圖還是實現都比較有學習的價值

首先剛開始我打算奇偶矩陣建圖,就像上次的男生女生跳舞一樣,但是發現流量無法控制

然後又重新回歸到s,t分別代表文理科的思路

最後的方法非常巧妙,其實我認為比較難想到...我們發現對於任意兩個相鄰的點有如下性質

當a和b分到不同的科目的時候,首先它們中間的邊肯定割掉,

其次他們肯定乙個割掉文科的邊乙個割掉理科的邊

所以正好割掉了文[a][b]+理[a][b]

當a和b分到相同科目的時候,要不割掉文[a][b]要不割掉理[a][b]

正好滿足我們題目的需要!!!

然後就可以建圖然後跑最大流了

但是我們發現這道題的點有點多,邊也很多,按照以前的方法會tie

有個小小的優化過程,就是對於兩人之間我們平時會建兩次單向邊

其實將它們互作為反向弧不是就可以嗎?節省了約一半的邊數

藍橋杯練習Day 2

問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,包含乙個整數,表示fn除以10007的餘數。說明 在本題中,答案是要求fn除以10...

CSP J S2019 做題練習(day2)

題面 最大子段和 dp 預處理兩個陣列 最後直接輸出即可。include include include include include include include define int long long define gi gi define itn int define file x fr...

網路流專題

模擬賽被網路流打爆了。題目來自於 pb 的網路流專題。左邊房子右邊菜,搞出最大流就行了。棋盤黑白染色,可選的方塊連邊,搞出最大流就行了。行列為點,格仔為邊。如果有完美匹配,就可以。否則不行。每個點最多對應兩個 t,所以這是乙個二分圖最大匹配。字典序最小,只需要從後往前匈牙利就行了。把圖建出來,是二分...