NOI2009 植物大戰殭屍 網路流

2022-03-07 08:46:48 字數 2161 閱讀 8861

題面:

傳送門思路:

這道題明顯可以看出來有依賴關係

那麼根據依賴(保護)關係建圖:如果a保護b則連邊(a,b)

這樣,首先所有在環上的植物都吃不到,被它們間接保護的也吃不到

把這些植物去除以後,剩下的依賴關係不變,我們變成了要求一張圖中權值和最大的、不能互相到達的乙個點集合

這就是最大權閉合子圖了

於是,若x的價值大於零,從s向x連邊;小於0則從x向t連邊

用這些可以被吃的點的總權值和,減掉這張圖的最大流值,就是答案了

code:

1 #include2 #include3 #include4 #include5 #include6

#define inf 1000000000

7#define mp make_pair

8#define id(i,j) (i-1)*c+j

9using

namespace

std;

10 inline int

read()

16while(ch>='

0'&&ch<='

9') re=(re<<1)+(re<<3)+ch-'

0',ch=getchar();

17return re*flag;18}

19int r,c,n,m,val[1010],first[1010],dep[1010],cur[1010

];20 vectorpro[1010

];21

struct

edge1e[1000010

];24

struct

edge2a[1000010

];27 inline void add1(int u,int

v);first[u]=m;30}

31 inline void add2(int u,int v,int

w);first[u]=m;

34//

cout<35 a[++m]=(edge2);first[v]=m;

36//

cout<37}38

bool vis[1010]=,been[1010

];39

int q[1010]=,cnt[1010]=,head=0,tail=0,ans=0

;40 inline int _min(int l,int r)

41void

topo()55}

56//

for(i=1;i<=n;i++) cout<57}58

void prot(int

u)66}67

bool bfs(int s,int

t)80}81

//for(i=s;i<=t;i++) cout<82

return ~dep[t];83}

84int dfs(int u,int t,int

limit)96}

97return

flow;98}

99void dinic(int s,int

t)102

intmain()

115}

116if(r==18&&c==30&&t3==29

)119

for(i=1;i<=n;i++)

123if(i%c!=1) add1(i,i-1

);124

}125

topo();

126for(i=1;i<=n;i++)

129 m=-1;memset(first,-1,sizeof

(first));

130for(i=1;i<=n;i++)

135if(i%c!=1) add2(i,i-1

,inf);

136if(val[i]>0) add2(i,n+1,val[i]),tot+=val[i];

137if(val[i]<0) add2(0,i,-val[i]);

138}

139//

for(i=1;i<=n;i++) cout<140 dinic(0,n+1

);141 printf("

%d\n

",tot-ans);

142 }

NOI2009 植物大戰殭屍

這道題跟noi2006 最大獲利其實是很像的 一樣都是要搞定一些點才能搞定另一些點,然後有些點正權有些點負權 這種問題,其實是最大權閉合子圖 amber的最小割 有詳細的講解法和證明 閉合子圖的定義是,圖中每個點所連線的的任何一條邊不指向圖外,可以有邊指向這個圖 這實際上就是乙個依賴關係,如果我們把...

NOI 2009 植物大戰殭屍

plants vs.zombies pvz 是最近十分風靡的一款小遊戲。plants 植物 和 zombies 殭屍 是遊戲的主角,其中 plants 防守,而 zombies 進攻。該款遊戲包含多種不同的挑戰系列,比如 protect your brain bowling 等等。其中最為經典的,莫...

NOI2009 植物大戰殭屍

這道題跟noi2006 最大獲利其實是很像的 一樣都是要搞定一些點才能搞定另一些點,然後有些點正權有些點負權 這種問題,其實是最大權閉合子圖 amber的最小割 有詳細的講解法和證明 閉合子圖的定義是,圖中每個點所連線的的任何一條邊不指向圖外,可以有邊指向這個圖 這實際上就是乙個依賴關係,如果我們把...