POJ1201 差分約束最長路

2021-07-28 15:23:49 字數 637 閱讀 4288

最小值→最大路。

在建圖時需要注意,區間左閉右開或右閉左開(否則相鄰區間公共頂點會被算兩次)。

兩個隱藏條件也要用於建圖,否則基本不能更新全。

第乙個是dis[i+1]-dis[i]>=0;

第二個是dis[i+1]-dis[i]<=1;

再根據題目輸入條件求最大路即可。

/*

time:219ms

memory:2520k

*/#include

#include

#define n 50010

int st=50010,en,cnt,m,dis[n],head[n],que[n];

bool in[n];

struct edges edge[200010];

inline

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

inline

int spfa() }}

}return dis[en];

}int main()

for(int i=st; i1,i,-1);

add(i,i+1,0);

}printf("%d",spfa());

}

poj 1201 差分約束

傳送門 題意 ai到bi間至少有ci個元素,問所有數中至少有多少元素。額。這樣好像說不清楚,我拿樣例說下吧。3到7之間至少有3個元素,8到10之間至少有3個元素,6到8之間至少有1個元素,1到3之間至少有1個元素,10到11之間至少有1個元素。最少情況如下 1 2 3 4 5 6 7 8 9 10 ...

差分約束(poj 1201

這裡簡要記一下差分約束。所謂差分約束,指的是由a b c這種不等式組組成的約束系統。一般的線性規劃問題可以用單純形法解決,但是這種特殊情況可以借助最短路演算法解決。記源點到v的最短路為d v 從u到v的最短路為d u,v 差分約束的最短路做法基於最短路的以下特點 對於沒有負圈的圖,任意兩點d u d...

POJ1201基礎差分約束

題意 有一條直線,直線上做多有50000個點,然後給你組關係 a b c表明a b之間最少有c個點,問直線上最少多少個點。思路 a b最少有c個點可以想象a到b 1的距離是大於等於c的,還有乙個隱含條件就是 0 s i s i 1 1,差分約束的題目記住找隱含條件很重要,這樣也就是一共三個條件,建邊...