SCOI2010 連續攻擊遊戲

2022-02-02 16:56:43 字數 725 閱讀 5293

原題鏈結

抱歉有點事要忙只能引用了……

這道題正解是用二分圖,但是做完這道題的第二題才講……所以我採用的我當時會的做法:並查集。

我們每有乙個**(a, b)時我們可以把它當做一條邊(a, b)。

然後對於構圖之後,乙個大小為k聯通塊,我們發現有如下性質:

——如果這個聯通塊沒有環(樹):因為有k-1條邊,那麼總有方法使其中的k-1個節點被覆蓋。容易知道這個聯通塊中一定不選最大的點。

——如果這個聯通塊有環:那麼這k個節點一定都可以被覆蓋

這時我們可以用並查集去維護聯通塊有沒有環,聯通塊的大小。

然後我們掃一遍就行了……看看該聯通塊有沒有環,如果沒有環的話是不是看它是不是這個聯通塊的最大乙個點。

引自

(注釋我寫的)

#includeusing namespace std;

const int maxn=1000000+3;//注意開n的範圍而不是開數的範圍

//因為攻擊n次所以數最大只能用到n,後面比n大的都不用管

int fa[maxn],size[maxn];

bool cir[maxn];

int find(int x)

int main()

} int ans;

for(int i=1;i<=n+1;i++)

else size[fai]--;

}} cout《幸甚至哉,歌以詠志。

SCOI2010 連續攻擊遊戲

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

SCOI2010 連續攻擊遊戲

這道題是乙個二分圖匹配問題。如果第 i 件裝備的屬性值為 j 將裝備 i 連邊到屬性值 j 注意裝備結點 屬性值結點 然後從 1 到 10000 跑二分圖匹配,判斷該點是否能被匹配。直到不能匹配為止。1 include 2 3using namespace std 45 define re regi...

SCOI2010 連續攻擊遊戲

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