luogu 3275 題解 糖果 差分約束

2022-05-12 12:05:57 字數 1018 閱讀 1532

題面:

大意:emmmmmmmm看到題面就知道真的不好總結。

差分約束的裸題。

將各類關係建成不同的邊。

當op為1的時候,建乙個雙向邊權值為0;

為2的時候,建立從a到b權值為1的邊;

為3的時候,建立從b到a權值為0的邊;

為4的時候建立從b到a權值為1的邊;

為5的時候建立從a到b權值為0的邊;

然後直接跑spfa,但是和普通最短路有區別。

不要更新最小。

而是要取最大,因為要滿足所有人。

當乙個點更新的次數大於等於n的時候,證明有環,不可行。

vis[ ] 就為spfa的vis[ ]陣列,us[ ]為更新過幾次。

**如下。

#includeusing

namespace

std;

intn,m;

const

int maxm=100010

;long

long ans=0

;int

head[maxm],tot;

struct

nodee[maxm

<<1

];inline

void add(int

from,int to,int

w)int

dis[maxm],us[maxm],vis[maxm];

queue

q;inline

bool

spfa() }}

}return1;

}int

main()

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

if(!spfa())

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

ans+=dis[i];

printf(

"%lld\n

",ans);

//system("pause");

return0;

}

《差分約束》luogu 3275 糖果

去題面的傳送門 對於題目中的各種條件 a b 建邊a b 0,b a 0 a b 建邊 b a 0 a b 建邊b a 1 為什麼呢?因為要求最少糖果數,那麼對於a b和a b的情況,就都讓它們相差的最少,就是0,對於a b,差的最少就是1,所以建邊為1.由於糖果數量最少的人的糖果至少也得有乙個,所...

洛谷P3275 糖果 差分約束 負環

有nn 個小朋友和m m個要求,其中要求的格式如下 求至少要多少個糖果使得每個小朋友都可以分到糖果並且所有要求都滿足。這道題的查封約束十分的明顯。可以直接列出來 需要滿足x y x y,為了寫成a b a b的形式,可以改成x y x y且y xy x需要滿足x y,也就是說a y 1a y 1需要...

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