P1993 小K的農場(差分約束)

2021-09-18 02:44:12 字數 2340 閱讀 9890

小k的農場

題目描述

小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊(共m個),以下列三種形式描述:

農場a比農場b至少多種植了c個單位的作物,

農場a比農場b至多多種植了c個單位的作物,

農場a與農場b種植的作物數一樣多。

但是,由於小k的記憶有些偏差,所以他想要知道存不存在一種情況,使得農場的種植作物數量與他記憶中的所有資訊吻合。

輸入輸出格式

輸入格式:

第一行包括兩個整數 n 和 m,分別表示農場數目和小 k 記憶中的資訊數目。

接下來 m 行:

如果每行的第乙個數是 1,接下來有 3 個整數 a,b,c,表示農場 a 比農場 b 至少多種植了 c 個單位的作物。

如果每行的第乙個數是 2,接下來有 3 個整數 a,b,c,表示農場 a 比農場 b 至多多種植了 c 個單位的作物。如果每行的第乙個數是 3,接下來有 2 個整數 a,b,表示農場 a 種植的的數量和 b 一樣多。

輸出格式:

如果存在某種情況與小 k 的記憶吻合,輸出「yes」,否則輸出「no」。

輸入輸出樣例

輸入樣例#1:

3 33 1 2

1 1 3 1

2 2 3 2

輸出樣例#1:

yes說明

對於 100% 的資料保證:1 ≤ n,m,a,b,c ≤ 10000。

差分約束可以求解最短路和最長路。這道題也是差分約束的模板題。

根據:

農場a比農場b至少多種植了c個單位的作物,

農場a比農場b至多多種植了c個單位的作物,

農場a與農場b種植的作物數一樣多。

建立條件。

由題可知,農場a比農場b至少多種植了c個單位的作物,所以xa-xb>=cxb-xa<=-c, 農場a比農場b至多多種植了c個單位的作物,所以xa-xb<=c,農場a與農場b種植的作物數一樣多,所以xa==xb,則xa-xb<=cxb-xa<=c

然後用spfa。(不要連錯了權值)

#includeusing namespace std;

const int maxn=11000;

const int inf=0x3f3f3f3f;

int n,m;

struct node

node(int _v,int _w)

};vector g[maxn];

int dst[maxn];

queue qu;

bool inq[maxn];

int cnt[maxn];

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

bool spfa(int u)}}

}}

return 1;

}int main()

for(int i=0;i> d;

if(d==1)else if(d==2)else

}if(spfa(0))else

return 0;

}

但實際上,它只能得到60分。四組tle。。。

於是,就涉及到另外乙個資料結構,雙向佇列。雙向佇列有佇列和棧的性質。可以從兩端入隊,彈出。在這道題裡,我們用if判斷,在佇列後端放入較大的值,前端放入較小的值分別用back和front訪問最後乙個元素和第乙個元素。

#includeusing namespace std;

const int maxn=11000;

const int inf=0x3f3f3f3f;

int n,m;

struct node

node(int _v,int _w)

};vector g[maxn];

int dst[maxn];

dequequ;//雙向佇列

bool inq[maxn];

int cnt[maxn];

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

bool spfa(int u)

inq[u]=0;

for(int i=0;idst[u]+w)}}

}}

return 1;

}int main()

for(int i=0;i> d;

if(d==1)else if(d==2)else

}if(spfa(0))else

return 0;

}

差分約束 P1993 小 K 的農場

建立乙個超級源點s,使得dis x dis i 然後就可以建邊 a b 可以拆成b a 之後再跑spfa,判斷是否有負環,有負環則說明不能滿足,無負環則能滿足 includeusing namespace std const int maxm 5005 const int inf 0x3f3f3f3...

P1993 小K的農場 差分約束

小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 但是,由於小k的記憶有些偏差,所以他想要知道存不存在一種情況,使得農場的種植作物數量與他記憶中的所有資訊吻合。輸入格式 第一行包括兩個整數 n 和 m,...

洛谷P1993 小K的農場 差分約束

對於n nn個物品,給出m mm個限制關係,分別是 1.a aa比b bb至少多種c cc單位的作物。2.a aa比b bb至多多種c cc單位的作物。3.a aa和b bb的作物數相等。求問是否滿足這樣的一種情形,符合所有的限制關係。不妨記f f f 表示 的作物數,顯然各條件等價於 1.f a ...