據說這個題卡常?有什麼關係,反正我用差分約束(
1:a-b>=c
2:a-b<=c
3:a=b
看起來已經很明顯了呢
我們跑最短路,再來轉換一下……
1:b<=a+-c
2:a<=b+c
3:a=b
啊更明顯了!所以我們直接建圖,然後打一遍板子這題就過了
當你覺得你可以秒掉這個題的時候,生活會給你重重一擊,並告訴你,「你**有bug~看不出來的那種~」
emm寫碼5分鐘除錯兩小時。
在這裡我還要提醒一下很容易錯的幾點(應該只有我錯了)
不要把路徑的起點和終點搞反
不要把鏈式前向星的遍歷寫錯
不要把兩個不同型別的變數來運算
好了真的結束了,這個題是裸裸的差分約束,真的除了建圖和板子沒區別……
#include#include#includeusing namespace std;long long n,m,a,b,c,s;
queueq;
struct hehe
lsqxx[12005];
long long head[7005],ans;
void add(long long t,long long w,long long cd)//鏈式前向星存圖
long long wz,bj[7005],zx[7005],cs[7005];
bool hs()
zx[0]=0;
while(q.empty()!=true)
if(bj[lsqxx[i].w]==0)
}} }
return true;
}int main()
for(int i=1;i<=m;i++)
else if(s==2)
else if(s==3)
}q.push(0);//0是超級原點
if(hs()==false)//不可能的
{ cout<
好了做完了……
洛谷P1993 小K的農場
小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 但是,由於小k的記憶有些偏差,所以他想要知道存不存在一種情況,使得農場的種植作物數量與他記憶中的所有資訊吻合。輸入格式 第一行包括兩個整數 n 和 m,...
洛谷P1993 小K的農場
這道題的實質是差分約束。我們逐個分析。設 a 農場中有 d a 個單位植物,b 農場為 d b 對於第一點,則滿足 d a d b geq c 變形下就變成 d b d a leq c 對於第二點 d a d b leq c 對於第三點 d a d b 即 d a d b 0 變成不等式就要同時滿足...
洛谷 P1993 小K的農場
小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 但是,由於小k的記憶有些偏差,所以他想要知道存不存在一種情況,使得農場的種植作物數量與他記憶中的所有資訊吻合。輸入格式 第一行包括兩個整數 n 和 m,...