題目鏈結
如果想消滅掉乙個植物,那麼必須先消滅掉左右能保護這個植物的植物。這就成了最大權閉合子圖的模板題了。
有兩個需要注意的地方。
第乙個就是,能保護當前植物的植物還有當前植物右面的所有植物。
第二個就是,在環裡的植物或者是被在環裡的植物所保護的植物是無法消滅的。
所以先拓撲一下,找出所有可能被消滅的植物,然後按照最大權閉合子圖的做法做就行了。
#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 ...