洛谷P2172 國家集訓隊 部落戰爭 題解

2022-04-06 03:08:18 字數 1224 閱讀 9104

不要被【國家集訓隊】的標籤嚇到,其實這題不是很難。

本題可以對比p4304 [tjoi2013]攻擊裝置:互不攻擊的網路流問題來想。

這道題唯一新增的條件就是只能從上往下征戰,於是我們就從8個方向縮減到了四個放向,哪四個呢?

aa[1]

=r;bb[1]

=-c;

aa[2

]=r;bb[2]

=c;aa[3]

=c;bb[3]

=-r;

aa[4

]=c;bb[4]

=r;

變數名較醜

然後還是要迴圈每乙個點來把它能攻擊到的點扔進vector裡。

還有這題的資料範圍其實也挺小,適合練習二分圖初級。

然後就是這種題目也是不用else break;了!

因為不存在單調性

#include

#include

#include

using

namespace std;

int aa[5]

;int bb[5]

;struct ben

;vectorv[55]

[55];

int vis[55]

[55];

ben link[55]

[55];

int t;

int a[55]

[55];

bool

find

(ben tmp)}}

return0;

}int

main()

else

a[i]

[j]=1;

}}aa[1]

=r;bb[1]

=-c;

aa[2]

=r;bb[2]

=c; aa[3]

=c;bb[3]

=-r;

aa[4]

=c;bb[4]

=r;for

(int i=

1;i<=m;i++)}

}}int cnt=0;

for(

int i=

1;i<=m;i++

)//else

//break;}}

printf

("%d\n"

,t-cnt)

;return0;

}

P2172 國家集訓隊 部落戰爭 網路流

戳這裡 題目相當於給定一張dag,求最少路徑覆蓋,這不就是網路流24題裡的那個最小路徑覆蓋的弱化版嗎?根據題意和最小路徑覆蓋的那個題的方法,我們把每乙個小鎮拆成入點和出點兩個,然後每乙個入點向能到達的小鎮的出點連邊,流量為 1 同時原點向每乙個小鎮的入點連邊,每乙個小鎮的出點向匯點連一條邊,流量都為...

國家集訓隊 部落戰爭

差不多就是dag最小路徑覆蓋吧 拆點連邊。不會的可以看看蒟蒻的這個關於網路流的小總結qwq 最小路徑覆蓋 不相交 節點個數 最大匹配 但是要注意的是這個題的節點個數不能算高山深澗的點,因為它本來就非法,自己就構不成乙個路徑。如下 include include include include inc...

國家集訓隊 部落戰爭

嘟嘟嘟 這其實就是一道最小邊覆蓋的板兒題。暴力連邊,然後跑匈牙利 dinic 則答案就是總結點數 匹配數。比如節點1和2,2和3匹配上了,那麼就是1到2,2到3這兩條路徑連線到一塊,相當於把節點3合併到這條路徑上了。所以從路徑數就是總結點數 連線次數。然而我不知怎麼想的寫了個費用流,雖然正確性是對的...