題解 洛谷 P1935 國家集訓隊 圈地計畫

2022-09-18 15:30:11 字數 1899 閱讀 5028

還是那個經典trick:最大價值=總價值-最小花費

每個位置都是二選一,考慮乙個魚刺型建圖。

然後就是需要描述乙個,如果 \(x\) 選了第 \(p\) 種方案,那麼如果它的鄰點也選了第 \(p\) 種方案,就有 \(-c\) 的代價,也就是有一條 \(-c\) 流量的邊需要割掉。

但是如果直接 \(s\) 連向每個格仔的邊流量為 \(a\),每個格仔流向 \(t\) 的格仔流量為 \(b\),你會發現這個限制描述不了。

注意到網格圖四聯通實際上是個二分圖,按照格仔的橫縱座標和的奇偶性分類就是個二分圖。

那麼將橫縱座標和為偶數的格仔,連邊變成 \((s,x,b),(x,t,a)\),然後限制的話直接在鄰點之間連 \((x,y,c_x+c_y),(y,x,c_x+c_y)\) 流量的邊,這樣如果 \(x\) 和其鄰點 \(y\) 如果選擇了同樣的一種方案,那麼就需要付出 \(c_x+c_y\) 的代價。

這樣用總價值減去最小割就可以了。

#include#include#include#include#include#define pb emplace_back

#define mp std::make_pair

#define fi first

#define se second

typedef long long ll;

typedef long double ld;

typedef unsigned long long ull;

typedef std::pairpii;

typedef std::vectorvi;

const ll mod = 998244353;

ll add(ll x, ll y)

ll mul(ll x, ll y)

ll mod(ll x)

ll cadd(ll &x, ll y)

ll cmul(ll &x, ll y)

template t max(t x, t y)

templatet max(t x, t2 ...y)

template t min(t x, t y)

templatet min(t x, t2 ...y)

template t cmax(t &x, t y)

template t cmin(t &x, t y)

template t &read(t &r)

templatevoid read(t1 &x, t2& ...y)

const int n = 5010;

const int m = 10010;

const ll inf = 0x7fffffffffffffff;

int n, m, a[110][110], b[110][110], c[110][110], p[110][110];

int tot, s, t, ent = 1, head[n], cur[n], dis[n];

struct edge e[m << 1];

inline void add(int x, int y, int z)

bool bfs()

} }return dis[t] != -1;

}ll dfs(int x, ll lim)

} return flow;

}ll dinic()

signed main()

else

sum += a[i][j] + b[i][j];

if(p[i-1][j])

if(p[i+1][j])

if(p[i][j-1])

if(p[i][j+1])

} printf("%lld\n", sum - dinic());

return 0;

}

洛谷 P1935 國家集訓隊 圈地計畫 最小割

題目描述 最近房地產商gdoi group of dumbbells or idiots 從noi nuts old idiots 手中得到了一塊開發土地。據了解,這塊土地是一塊矩形的區域,可以縱橫劃分為n m塊小區域。gdoi要求將這些區域分為商業區和工業區來開發。根據不同的地形環境,每塊小區域建...

洛谷 P1505 國家集訓隊 旅遊

洛谷傳送門 ray 樂忠於旅遊,這次他來到了 t 城。t 城是乙個水上城市,一共有 nn 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有 n 1n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人...

題解 洛谷P1407 國家集訓隊 穩定婚姻

題面 很好的 tarjan 練習題。主要講一下如何建圖。先用 stl map 把每個人的名字對映成數字。輸入第 i 對夫妻時把女性對映成 i 把男性對映成 i n 輸入相互喜歡過的情侶時將男性向女性連邊。然後 tarjan 判斷 i 與 i n 是不是在同乙個強連通分量裡即可。今天是七夕節誒 inc...