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 ...