Bzoj1565 NOI2009 植物大戰殭屍

2022-05-13 15:27:18 字數 2139 閱讀 7104

time limit: 10 sec  memory limit: 64 mb

submit: 2363  solved: 1092

僅包含乙個整數,表示可以獲得的最大能源收入。注意,你也可以選擇不進行任何攻擊,這樣能源收入為0。

3 210 0

20 0

-10 0

-5 1 0 0

100 1 2 1

100 0

25在樣例中, 植物p1,1可以攻擊位置(0,0), p2, 0可以攻擊位置(2,1)。 

乙個方案為,首先進攻p1,1, p0,1,此時可以攻擊p0,0 。共得到能源收益為(-5)+20+10 = 25。注意, 位置(2,1)被植物p2,0保護,所以無法攻擊第2行中的任何植物。 

【大致資料規模】

約20%的資料滿足1 ≤ n, m ≤ 5;

約40%的資料滿足1 ≤ n, m ≤ 10;

約100%的資料滿足1 ≤ n ≤ 20,1 ≤ m ≤ 30,-10000 ≤ score ≤ 10000 。

網路流+拓撲排序

因為植物可能會互相保護而形成環,所以先用拓撲排序排除環,求出圖中的閉合子圖。

然後按照先吃右邊才能吃左邊的關係,從每個點向它左邊一格的點連邊,容量為inf

保護型的植物向它保護的植物連邊,容量為inf。

吃植物能獲得收益時,該植物向匯點連邊,容量為收益。

吃植物需要代價時,源點向該植物連邊,容量為代價的絕對值。

答案=可能獲得的收益總和-最小割。

1

/*by silvern

*/2 #include3 #include4 #include5 #include6 #include7 #include8 #include9

using

namespace

std;

10const

int mx[5]=;

11const

int my[5]=;

12const

int inf=1e9;

13const

int mxn=2010;14

intread()

17while(ch>='

0' && ch<='9')

18return x*f;19}

20struct

edgee[mxn*500

];23

int hd[mxn],mct=1;24

void add_edge(int u,int v,int

f)27

void insert(int u,int v,int

f)30 vectoreg[mxn];

31int

n,m,s,t;

32int

d[mxn];

33bool

bfs()46}

47}48return

d[t];49}

50int dfs(int u,int

lim)60}

61 d[u]=0;62

return

f;63}64

intdinic()

69int id[50][50],cnt=0

,ed;

70void

init()

77int

sc[mxn];

78int

ind[mxn];

79int st[mxn],top=0;80

bool

vis[mxn];

81void topo()

92else insert(s,u,-sc[u]);//

需要付出的代價

93for(j=0;j)99}

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

101for(j=2;j<=m;j++)

105}

106 res=res-dinic();

107 printf("

%d\n

",res);

108}

109int

main()

123if(j>1)

127}

128}

129topo();

130return0;

131 }

bzoj1565 NOI2009 植物大戰殭屍

傳送門 這道題吃到某個植物a可能需要先吃掉別的植物b 在他的右邊或者保護著他 那麼我們把a連向b。發現這是最大權閉合子圖。顯然是可以通過網路流水過的。閉合子圖 v中頂點的所有出邊均指向v內部頂點 那麼按照最大權閉合圖的建圖方法 1.s向正權點連流量為權值的邊 2.負權點向t連流量為權值的絕對值的邊 ...

BZOJ1565 NOI2009 植物大戰殭屍

好久沒寫部落格了 題目在這裡 沒什麼好說的 應該很容易看出是最大閉合子圖吧?不過要注意一下的是,這題可能有植物是不可能被擊潰的,所以要先跑一遍拓撲排序把這些點排除掉 include include include include include include include include usi...

BZOJ1565 NOI2009 植物大戰殭屍

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