分析:非常非常好的一道題!
首先需要對問題進行轉化:
行列無關,對於行單獨處理,對於列單獨處理
必然存在乙個最優方案使得每乙個新站與舊站重合.
轉化1很顯然,對於轉化2,是一類非常經典的「中位數問題」,即在一條線段上,有若干個特殊點,要選擇乙個點的位置,使得它到這些點距離*對應權值的和最小. 結論就是這個點一定在給定的這些點的位置上.
那麼問題可以變成,m個位置,每個有n種選擇,代價即為其與舊站的傳輸代價和。不同位置間的選擇也會帶來代價.
首先假設我們不知道這道題要用網路流來做. dp? emm,這怎麼設計狀態啊,要狀壓嗎? 明顯壓不下. 貪心,肯定不行. 這道題涉及到「匹配」,自然就是網路流咯.
費用流可以嗎?顯然是不行的,舊站與新站之間的費用很好處理,但是新站與新站之間的費用不好處理.
那就只有是最大流咯. 用流量表示費用?這怎麼表示啊......
那麼鎖定方法--最小割!
每個位置有多種選擇,注意到這句話,可以往兩個方面去想:
把選擇看作點.
將每個位置拆成選擇個數個點.
本題如果要用最小割顯然不能用第一種方法.因為選擇與選擇之間不好處理,那麼就用第二種方法.
上面所畫的就是建圖方式.具體說來,就是s連向每個點拆出來的第乙個點,容量為inf,每個點拆出來的最後乙個點連向t,容量為inf.
對於第i個點拆出的第k個點連向第i個點拆出的第k+1個點,容量為第i個新站建在第k個舊站的代價.
對於第i個點拆出的第k個點連向第j個點拆出的第k個點,容量為b_ij.
下面來分析一下建圖:
割掉第i個點拆出來的點實際上就是確定了第i個新站的位置. 如上圖所示,如果同時割掉兩條紅色的邊,為了使得s,t不連通,必然會割掉兩條綠色的邊. 如果i的選擇是pi,j的選擇是pj,一共會割掉 |pi - pj|條綠邊,正好就是新站i,j之間的代價.
至此這道題就做完了.
一點感想:最小割為了使得st不連通,一次能夠割掉很多條邊.如果網路流的題要求很多的貢獻(兩兩之間的).嘗試用最小割?
ctsc2010 星際旅行
題意很簡單 給定一棵樹,問從根分別走到每個節點的最長路程,其中每個點給定lim,即最多從該點出發lim次,保證lim大於等於該點的度數。特別 鳴謝 ldl在他的模擬題中出了這道題。當題解講這要用樹形dp解網路流模型時,都被驚異了,完全沒有想到網路流,也完全沒有必要網路流,atm在考場上直接有樹形dp...
CTSC2018 混合果汁
為何要用整體二分,整體二分應該怎樣二分,和 poi2011 met meteors十分相像,這裡就不再重複。那麼對於乙個顧客來講,如果當前的區間總份數小於他想要的份數,或者是區間最小 大於他能接受的最大 就把該顧客劃分到右區間,如若滿足則劃分到左區間。想要和 poi2011 met meteors一...
CTSC2010 效能優化
ctsc2010 效能優化 迴圈卷積快速冪 兩個注意點 n 1不是2 k p 1形式,任意模數又太慢?n 2 k1 3 k2 5 k3 7 k4 多路分治!深刻理解fft運算本質 分治,推式子得到從下往上的迭代公式 最後求的是w n i的點值 快速冪 迴圈卷積快速冪比較特殊,就是g f,n的項的係數...