問題:有n個東西,分給m個人,對於每個東西,每個人有喜歡與不喜歡兩種態度:like[i][j],如果喜歡,那麼他得到該東西時增加的喜悅度為k,否則為1,問是否存在一種分法,使得每個人都達到該人的最低喜悅度b[i]。
建模方法:
src->thing[i] cost = 0, cap = 1
kid[i]->dst : if b[i]/k != 0 : cost = k, cap = b[i]/k
if b[i]%k!=0 : cost = b[i]%k, cap = 1
thing[i]->kid[j] : if like[j][i] : cost = 0, cap = 1
求出最大費用最大流:cost, flow
如果:cost+(n-flow) >= sum of b,則存在一種分法。
否則不存在。
收穫:1、「該區分的區分,該不區分的不區分」,本題而言,對於所有喜歡的東西,如果它選了p個,那麼選的p個對kid而言不區分,所以用流量表示個數,費用表示乙個的貢獻。
對於kid不喜歡的東西,也是一類不區分的,只需要知道還差幾個不區分的就行了。
2、「最大化必須的」。。。。。。
BZOJ4698 差分 二分 SA
這題的難點在於相同的定義,在這樣的定義下一般的字串匹配演算法就不適用了。但是可以通過乙個操作,將前後相鄰的字串差分形成乙個長度為len 1的差分串,原來的相同下的定義就轉為了差分串的完全相同,證明顯然。在這種情況下,再把字串全部拼接起來,用特殊字元隔開,然後二分他們的長度去做字尾陣列,看有沒有相鄰的...
題解 bzoj4710 分特產
如果沒有每個人都分的限制,直接上組合數即可 考慮容斥 設 f i 為至少有 i 個人沒有分到特產的方案,我們可以知道 displaystyle f i binom prod binom 其中 a j 為第 j 種特產的數量 displaystyle binom c n m 解釋一下上面的東西吧,首先...
BZOJ5046 分糖果遊戲
題目大意 有a,b兩個人分糖,每個人都有乙個能量值。每個人每一輪可以選擇進行兩種操作 1.取走最左邊的糖果,補充相應的能量值並獲取相應的美味度。2.跳過這一輪,能量值 1.問在每個人都採取最優決策的情況下,每個人能獲得最多的美味度是多少?思路 動態規劃。f i j 表示吃第i n的糖,並獲得j的美味...