題解 洛谷P3275 SCOI2011 糖果

2022-07-02 11:12:13 字數 887 閱讀 1604

題面

其實是裸的差分約束吧 qwq。

對於每一種情況分類討論一下:

這裡說一下差分約束最基本的建圖方式:

如何求最值呢?

結論:如果求的是最小值,那麼我們就跑一遍最長路;否則就跑一遍最短路。

具體的方法就是對於每乙個 \(x_i \geq c\) 的條件,建立乙個超級源點 \(0\),由 \(0\) 向 \(x_i\) 連一條長度為 \(c\) 的邊。

因為本題中要求每個小朋友都要分到糖果,所以我們就建立乙個超級源點 \(0\),向每乙個點連一條長度是 \(1\) 的邊。

最後跑一遍最長路就可以了。

注意如果圖中有正環就說明無解。

而且這一題中用佇列貌似會被卡,因此我們在找正環時把棧改成佇列即可。

#include using namespace std;

typedef long long ll;

const int n = 100003, m = 300003;

int n, m;

int cnt[n];

int tot, head[n], ver[m], nxt[m], edge[m];

bool st[n];

ll dist[n];

int stk[n];

inline void add(int u, int v, int w)

inline bool spfa()}}

}return false;

}int main()

for (int i = 1; i <= n; i+=1) add(0, i, 1);

if (spfa()) puts("-1");

else

return 0;

}

題解 洛谷P3275 SCOI2011 糖果

一道條件非常多的差分約束 把 a b 轉化為 a b le 1 就可做了 a b 的情況同理 若有負環則無解輸出 1 注意本題中要求每個人都有糖果 所以假設乙個源點 d 使 d d ge 1 1 le i le n 另外,本題要求得是最小值 x x le a 的形式求出的是最大值 要轉化成 x x ...

P3275 SCOI2011 糖果 題解

一道差分約束的模板題。題目題意 n個人每個人至少乙個糖果,另外要滿足k個不等式,求最少糖果數。差分約束系統 給定一組不等式 x i x j c k 或 x i x j c k 需要求出滿足所有不等式的一組解 x 1 x 2 x n 這類問題是線性規劃的一類簡單問題。形式 通常表示為 ax c 或ax...

洛谷P2472 SCOI2007 蜥蜴 題解

這道題用最大流解決。首先構建模型。一根柱子可以跳入和跳出,於是拆成兩個點 入點和出點。每一根柱子的入點和出點連一條流量為高度的邊,來限制蜥蜴跳入的次數。當柱子a可以調到柱子b時,就從a的出點向b的入點連邊,流量inf。s向所有有蜥蜴的柱子的入點連邊,流量為1 t表示地圖外一點,當一根柱子能跳到地圖外...