[scoi2011]糖果
顯然差分約束,根據條件建立所有邊,注意相等建立雙向邊。
至於為什麼跑最長路,我認為是只有式子 i - 0 >= 1才能建立0到 i (i從1到n)的邊,這樣才能把所有點連起來。
不過這裡的題解沒有建立0到 i 的所有邊,因為從 0 開始直接spfa 判斷 n 次 會tle,就對每個點用dfs的spfa,這種處理對於負權環較快。ans開long long 。圖不聯通,對每個點spfa。
在spfa裡面,每次訪問過book標記,若可以變長 dis【v】< w,且正在進行 dfs ,就說明存在環。
只要不只對0spfa就不會tle
#include using namespace std;
#define inf 0x7fffffff
#define ll long long
struct e;
int cnt,head[2000000],book[100005],dis[100005];
int tot[100005],in[100005];
e edge[300005];
int n,m;
void add(int u,int v,int w)
bool spfa(int s)
}book[s] = 0;
return true;
}int main()
else if(c==2)else if(c==3)else if(c==4)else
if(c%2==0 && a==b)
}//for(int i=1;i<=n;i++) add(i,0,1);
for(int i=1;i<=n;i++)dis[i]=1;
int f=0;
for(int i=0;i<=n;i++)
}if(f)printf("-1\n");
else
return 0;
}
SCOI 2011 糖果 SPFA 差分約束
description 幼兒園裡有n個小朋友,lxhgww老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,lxhgww需要滿足小朋友們的k個要求。幼兒園的糖果總是有限的,lxhgw...
差分約束詳解 洛谷SCOI2011糖果題解
差分約束系統 如果乙個系統由n個變數和m個約束條件組成,形成m個形如ai aj k的不等式 i,j 1,n k為常數 則稱其為差分約束系統 system of difference constraints 亦即,差分約束系統是求解關於一組變數的特殊不等式組的方法。度娘。然而並沒有看懂。通俗來說,滿足...
SCOI2011 糖果 題解
洛谷題面 看到很多題解並沒有講清楚這道題為什麼可以用某些方法,套個板子就沒了。蒟蒻就發一篇題解裝x造福大家吧233 做這道題前,我推薦大家做一下一本通中的1352 例4 13 獎金一題,因為有可能做完了這道題對於你們會有一點啟發。題目分析題目對於小朋友的嫉妒一共有 5 中情況,分別如下 如果 x 1...