poj 1364 差分約束

2022-05-22 07:36:12 字數 904 閱讀 2068

思路:設dis[i]為從0點到第i點的序列總和。那麼對於a b gt  k 來講意思是dis[b+a]-dis[a]>k; 對於a b lt k來講就是dis[b+a]-dis[a]dis[a]-dis[b+a]<=-k-1;  dis[a+b]-dis[a]<=k-1;那麼就可以根據公式來建邊了,用bellman_ford演算法判斷是否存在負圈就行了。

1 #include2 #include3 #include4 #include5

#define maxn 1100

6#define inf 1<<30

7using

namespace

std;

8int

dis[maxn],vi[maxn],n,index[maxn],e;

9struct

edgeedge[maxn*1000

];12

void addedge(int

from, int to, int

val)

1320

void

init()

2129

intbellman_ford()

3044}45

if(flag)

46return1;

47}4849

return0;

50}51int

main()

5267

if(bellman_ford())

68 printf("

lamentable kingdom\n");

69else

70 printf("

successful conspiracy\n");

71}72return0;

73 }

POJ 1364 差分約束

解題的思路比較奇葩。第一次見到啊,也不知道別人是怎麼看出來這種情況下就是差分約束也就是可以用到圖論,表示真的好迷啊。看來對差分約束的概念還很差呢。include include include include includeusing namespace std const int maxn 100...

POJ 1364 差分約束

思路 把所有 變成 把所有 加一減一就好了 然後我們發現 圖不一定連通!怎麼辦呢 對於每乙個連通塊spfa就好了嘛 by siriusren include include include include define n 111 using namespace std char a 3 inq n...

POJ 1364 差分約束

題意 給出乙個數字序列 s 它有 m 個子序列 si 現在給出 m 個限制條件 第 i 個子序列的和 ki 或 第 i 個子序列的和 ki 思路 標準的差分約束,用s is i si 表示a1 a2.ai a 1 a 2.a i a1 a2 ai 的值,並且s0 0s 0 0 s0 0,所有s is...