bzoj1497 NOI2006 最大獲利

2022-06-02 07:00:08 字數 761 閱讀 2590

最大權閉合子圖...詳細證明見胡伯濤**

s向正權點連邊容量為收益 負權點向t連邊容量為花費

然後對於每一條依賴關係 兩個點向依賴的點連邊容量為正無窮

最後答案即為總收益減最大流

1 #include2

#define inf 2147483647

3#define n 60000

4#define rep(i,l,r) for(int i=l;i<=r;i++)

5using

namespace

std;

6int n,m,ans,tot=1

,head[n],dis[n],a,b,c,t;

7struct

edgee[350000

];10 inline int

read()

16 inline void ins(int u,int v,int

w) 19 inline void insert(int u,int v,int

w) 22 inline bool

bfs()30}

31if(dis[t]>0) return

1;else

return0;

32}33int find(int x,int

low)

42 dis[x]=-1;43

return low-delta;44}

45int

main ()

view code

BZOJ1497 NOI2006 最大獲利

什麼是最大權閉合子圖 先解釋一下有向圖的閉合圖 閉合圖內任意點的任意後繼也一定還在閉合圖中。物理意義 事物間依賴關係 乙個事件要發生,它需要的所有前提也都一定要發生。最大權閉合圖 點權之和最大的閉合圖 最大權閉合圖構圖方法 1.增加源s匯t 2.源s連線原圖的正權點,容量為相應點權 3.原圖的負權點...

bzoj 1497 NOI2006最大獲利

我對題意的理解 給出一堆公司和一堆使用者,我們買公司需要花錢,每個使用者會支付報酬當且僅當他所鍾愛的兩個公司我都買了,問最大獲利 最大權閉合子圖 好厲害的樣子 首先我們連邊最小割ans 答案就是sum ans 這個可以想,sum表示在不需要支出的情況下的獲利,現在我們需要支出,所以要跑一遍最小割。感...

bzoj1497 NOI2006 最大收益

最小割 思路比較簡單 點數看起來很多但是因為是類似二分圖的東西所以跑的比較快 源點對每個使用者連容量為收益的邊 使用者向中轉站連容量無窮大的邊 中轉站向匯點連容量為成本的邊 要麼割掉使用者帶來的收益 要麼割掉成本 include include include using namespace std...