poj 1364 King 差分約束

2021-07-15 12:25:24 字數 765 閱讀 2495

題目大意:有乙個序列。給定一些約束條件,格式為si、ni、oi、ki,意思是序列中第si項到第si+ni項的和》(或<)ki,oi表示》(用"gt」表示)或<(用"lt"表示)。問這樣的序列是否存在。存在輸出"lamentable kingdomi",否則輸出"successful conspiracy"。

思路:簡單的差分約束,就是題目描述有點不太好懂,還有就是,題目給出的是》,<,要把它轉化成》=,<=。需要注意,雖然序列長度為n,但是建圖的時候用來第0項,相當於序列長度變為了n+1,所以bellman演算法要迴圈n次!

#include#include#include#include#include#include#includeusing namespace std;

#define m 110

#define inf 0x3f3f3f3f

struct node

edge[m];

int n, m;

int mx, mn;

int dist[m];

void bellman_ford()}}

}int main()

else

}bellman_ford();

int flog = 0;

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

}if (flog)

else

printf("lamentable kingdom\n");

}return 0;

}

poj 1364 King 差分約束

注意差分約束只能求 或 spfa判斷有無負權迴路。對於差分不等式,a b c 建一條 b 到 a 的權值為 c 的邊,求的是最短路,得到的是最大值 對於不等式 a b c 建一條 b 到 a 的權值為 c 的邊,求的是最長路,得到的是最小值。存在負環的話是無解,求不出最短路 dist 沒有得到更新 ...

POJ1364 King 差分約束

鏈結 poj1364 題目大意 給你n和m,以及m個約束條件,對於每個約束條件給出si,ni,oi,ki,求是否有乙個n個元素的序列a能滿足這些約束條件。其中oi可以分別表示為gt 和lt 約束條件的定義為as i as i 1 as i ni ki 或asi asi 1 asi ni。解題報告 了...

差分約束 poj 1364 King

大致題意 告訴你有一列長度為n的數列和m個關係式。每個關係式的表述為 si ni gt c 或者是 si ni lt c。分別代表該數列第si項一直加到第si ni項的和大於c,和第si項一直加到第si ni項的和小於c。求是否存在滿足以上m個要求的數列。是則輸出 lamentable kingdo...