P1640 SCOI2010 連續攻擊遊戲

2022-04-10 04:19:18 字數 727 閱讀 8720

link

好久沒寫過匈牙利演算法了,今天來複習一下。

這題是典型的二分圖匹配問題。

我們考慮怎麼建邊。因為每種裝備只能用一次。

所以我們可以把裝備屬性和他的裝備序號連邊。然後從一開始匹配,第乙個匹配失敗的點的上乙個就是我們最終的答案。

這個題 \(n\) 的範圍挺大的,所以我們不能寫網路流(網路流多好寫啊)。

匈牙利演算法理論上是 o(n^2) 的,但是跑不滿,勉勉強強可以過吧。

code:

#include#include#include#includeusing namespace std;

int n,x,y,tot,head[1000010],match[1000010];

bool vis[1000010];

struct node

e[2000010];

inline int read()

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

return s * w;

}void add(int x,int y)

bool dfs(int x)//二分圖匹配}}

return false;

}int main()

for(int i = 1; i <= n+1; i++)//一定要迴圈到n-1不然第乙個點會 wa

}}

這道題還可以用並查集來寫,先咕著吧,等我寫完在更

洛谷P1640 SCOI2010 連續攻擊遊戲

lxhgww最近迷上了一款遊戲,在遊戲裡,他擁有很多的裝備,每種裝備都有2個屬性,這些屬性的值用 1,10000 之間的數表示。當他使用某種裝備時,他只能使用該裝備的某乙個屬性。並且每種裝備最多只能使用一次。遊戲進行到最後,lxhgww遇到了終極boss,這個終極boss很奇怪,攻擊他的裝備所使用的...

洛谷P1640 SCOI2010 連續攻擊遊戲

今天在看題解查如何縮減複雜度的時候看到乙個巨巨方法 用時間點來查重!由於每一次memset來實在是太慢了 直接記錄每一次進去的大小 比如第一次進入是 1 只需判斷vis i 是否為1就行 第二次進入是2 只需判斷vis i 是否為2就行!太巨了膜拜 我洛谷直接關注 include include d...

洛谷P1640 SCOI2010 連續攻擊遊戲

題目大意 有很多的裝備,每種裝備都有2個屬性,這些屬性的值用 1,10000 之間的數表示。每種裝備最多只能使用一次,且只能使用其中一種屬性。裝備所使用的屬性值必須從1開始連續。問最多能攻擊多少次?題解 每個裝備從屬性像編號連邊,匈牙利演算法,跑出匹配,若乙個匹配不了就結束 卡點 無 c code ...