BZOJ 3436 小K的農場

2022-05-26 02:00:12 字數 1739 閱讀 6605

time limit: 10 sec  memory limit: 128 mb

submit: 938  solved: 417

[submit][status][discuss]

背景小k是個特麼喜歡玩mc的孩紙。。。

描述小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得

一些含糊的資訊(共m個),以下列三種形式描述:農場a比農場b至少多種植了c個單位的作物,農場a比農場b至多

多種植了c個單位的作物,農場a與農場b種植的作物數一樣多。但是,由於小k的記憶有些偏差,所以他想要知道存

不存在一種情況,使得農場的種植作物數量與他記憶中的所有資訊吻合。

第一行包括兩個整數n和m,分別表示農場數目和小k記憶中的資訊的數目接下來m行:如果每行的第乙個數是1,接

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

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

種植的數量與b一樣。1<=n,m,a,b,c<=10000

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

3 33 1 2

1 1 3 1

2 2 3 2

yes樣例解釋

三個農場種植的數量可以為(2,2,1)

kpmcup#0 by greens

入門題!

設點x,y相差c

若x==y,x與y之間連兩條權值為0的的邊

x-y<=c,y向x連一條權值為c的邊

x-y>=c變形為y-x<=c,x向y連一條權值為-c的邊

構出一張有向圖,利用spfa在圖中找負權環,若有負權環則說明答案不合法(spfa找負權環應當使用dfs版的)

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10

#define yyj(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout);

11#define llg long long

12#define maxn 50000

13#define md 20000

14#define inf (llg)1e16

15using

namespace

std;

16 llg i,j,k,n,m,dl[maxn*10

],head,tail,dis[maxn],bj[maxn],js[maxn],heh,top,stack[maxn];

17bool

f;18

19 vector a[maxn],val[maxn];

2021

void

link(llg x,llg y,llg v)

2225

26void

init()

2737

if (t==2)38

42if (t==1)43

47}48 f=true;49

}5051bool

spfa()

5266}67

}68}69

return

true;70

}7172int

main()

73

BZOJ3436 小K的農場

差分約束系統。分析一下三種情況 1.農場a aa比農場b bb至少多種植了c cc個單位的作物 即a b c b a ca geq b c b leq a c a b c b a c,a aa向b bb連一條長度為 c c c的單向邊。2.農場a aa比農場b bb至多多種植了c cc個單位的作物。...

BZOJ 3436 小K的農場

題解 差分約束 模板題 差分約束系統 聯絡 最短路 對於操作1 a b geqslant c rightarrow b leqslant a c 也就是說a向b連一條 c的邊 對於操作2 a b leq c 也就是b向a連一條c的邊 對於操作三 a b leq 0 和 b a leq 0 也就是a向...

BZOJ 3436 小k的農場(差分約束)

description 背景 小k是個特麼喜歡玩mc的孩紙。描述小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 農場a比農場b至少多種植了c個單位的作物,農場a比農場b至多多種植了c個單位的作物,農場...