bzoj1565 植物大戰殭屍

2022-04-10 05:20:43 字數 1101 閱讀 3248

題目鏈結

如果想消滅掉乙個植物,那麼必須先消滅掉左右能保護這個植物的植物。這就成了最大權閉合子圖的模板題了。

有兩個需要注意的地方。

第乙個就是,能保護當前植物的植物還有當前植物右面的所有植物。

第二個就是,在環裡的植物或者是被在環裡的植物所保護的植物是無法消滅的。

所以先拓撲一下,找出所有可能被消滅的植物,然後按照最大權閉合子圖的做法做就行了。

#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

#define num(x,y) y + (x - 1) * m

const int n = 100000,m = 1000000,inf = 1e9;

vectore[n];

ll read()

while(c>='0'&&c<='9')

return x*f;

}struct node e[m];

int head[n],ejs = 1;

void add(int u,int v,int w)

int n,m,w[n],du[n];

queueq;

int dep[n];

int s,t;

int bfs()

} }return 0;

}int cur[n];

int dfs(int u,int now)

} return ret;

}int dinic()

return ans;

}int main()

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

} for(int i = 1;i <= n * m;++i) if(!du[i]) q.push(i);

while(!q.empty())

} int ans = 0;

for(int i = 1;i <= n * m;++i)

} }cout

}

BZOJ 1565 植物大戰殭屍

思路 由於植物之間有保護關係 右邊的植物保護左邊的植物,植物攻擊範圍內的植物都被保護了 因此可以用最大權閉合子圖。1 include2 include3 include4 include5 include6 define inf 0x7fffffff 7struct edgee 500005 10 ...

1565植物大戰殭屍

description input output 僅包含乙個整數,表示可以獲得的最大能源收入。注意,你也可以選擇不進行任何攻擊,這樣能源收入為0。sample input 3 210 0 20 0 10 0 5 1 0 0 100 1 2 1 100 0 sample output hint 在樣例...

1565 NOI2009 植物大戰殭屍

題面 很裸的乙個最大權閉合子圖啊。如果依賴關係有環,活著說他的依賴關係和環有關,就把這個點廢掉。然後你就構圖跑最大權閉合子圖就好了 include include include include include using namespace std const int n 23 33 const ...