傳送門
這道題吃到某個植物a可能需要先吃掉別的植物b(在他的右邊或者保護著他),那麼我們把a連向b。
發現這是最大權閉合子圖。
顯然是可以通過網路流水過的。
閉合子圖:
v中頂點的所有出邊均指向v內部頂點
那麼按照最大權閉合圖的建圖方法:
1.s向正權點連流量為權值的邊
2.負權點向t連流量為權值的絕對值的邊
3.有邊相連的兩點連流量為inf的邊
答案就是正權點的權值總和減去最小割。
但是資料中可能會出現氪金植物(玩家)
他們之間的保護關係像乙個環(想象乙個無冷卻的食人花前面放乙個堅果)
顯然非氪金玩家殭屍是幹不掉他們的。
所以在跑網路流之前先進行拓撲排序。
強制刪除不可達點即可。
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define n 605
using namespace std;
struct edgee[500005];
int head[n],in[n],dis[n],f[n],q[n],ok[n];
int n,m,s,t,p,x,y,ans,tot=1;
void ins(int
x,int
y,int w)
void topo()
}}bool bfs()
}return dis[t]!=-1;
}int dinic(int
x,int flow)
if (rest) dis[x]=-1;
return flow-rest;
}int main()
if (i%m) ins(i,i+1,inf);
}topo();
while (bfs()) ans-=dinic(s,inf);
printf("%d",ans);
}
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等等。其中最為經典的,...
Bzoj1565 NOI2009 植物大戰殭屍
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...