1565 NOI2009 植物大戰殭屍

2021-08-09 05:16:37 字數 1342 閱讀 4588

題面

很裸的乙個最大權閉合子圖啊。。

如果依賴關係有環,活著說他的依賴關係和環有關,就把這個點廢掉。。

然後你就構圖跑最大權閉合子圖就好了

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=23*33;

const

int max=1

<<30;

struct qt

s[n];

struct qy

ss[n*n];//指向的是他需要誰

int num,last[n];

int n,m;

int p (int x,int y)

void init (int x,int y)

int dfn[n],low[n],belong[n],cnt,sta[n],lalal,shen;

bool in[n];

int tt[n];

int mymin (int x,int y)

void dfs1 (int x)

else

if (in[y]) low[x]=mymin(dfn[y],low[x]);

}if (low[x]==dfn[x])

while (now!=x);

}}qy e[n*n*2];

int last[n];

int st,ed;

void init (int x,int y,int z)

int h[n];

bool bt ()}}

return h[ed]!=-1;

}int dfs (int x,int f)

}if (s1==0) h[x]=-1;

return s1;

}int ok[n];//這個點能不能用

//-1不知道 0不能 1能

void dfs (int x)

}ok[x]=1;

}void solve ()

}while (bt()) ans=ans-dfs(st,max);

printf("%d\n",ans);

}void ins ()

if (i!=m) init(p(u,i),p(u,i+1));

}/*for (int u=1;u<=num;u++)

printf("%d %d\n",ss[u].x,ss[u].y);*/

}int main()

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等等。其中最為經典的,...