poj 1201 Intervals 差分約束系統

2022-05-07 17:42:08 字數 824 閱讀 4778

​ 題目鏈結

​ 差分約束系統。

​ 設\(s[x]\)表示從橫座標為0到橫座標為\(x\)的最少點數,所以求出\(s[maxn]\)就好了。(\(maxn\)為橫座標最大的數)

​ 根據每個區間最少的點數,我們可以得到:\(s[y] - s[x - 1] >= c\);

​ 另外還要是後面的大於等於前面的:\(s[i] - s[i - 1] >= 0\);

​ 因為相鄰的最多隻差一,所以:\(s[i] - s[i - 1] <= 1\)。

​ 還有:dij一定不能用在帶有負邊權的圖中!!!這道題只能用spfa。(我傻不愣登的調了一上午dij)

#include #include #include #include #define int long long

using namespace std;

inline long long read()

const int n = 5e5 + 5, inf = 1e9;

int n, maxn, minn, cnt;

int in[n], vis[n], dis[n], head[n];

struct edge e[n << 2];

void add(int x, int y, int z)

void run_dij() }}

}signed main()

for(int i = minn;i <= maxn; i++)

run_dij();

printf("%lld", dis[maxn]);

return 0;

}

差分約束 poj 1201 Interval

差分約束 poj 1201 又是一道vector tle。確實很好的差分約束。很好的差分約束,注意隱含條件 0 d i 1 d i 1 題目保證了沒負圈。include include include using namespace std define n 50005 define inf 100...

POJ 1201 樹狀陣列

給你n個區間,每個區間為 a,b 每個區間取c個數構成乙個集合,求集合最小容量 把區間按b排序,從第乙個區間開始取,從後往前取,這樣盡可能和後面的區間重複 另外如果我們發現當前區間取得個數已經超過了c,那麼只需要讓之前區間換就行,而總數是不變的,所以不用更新答案 求當前區間已經取了多少個數用樹狀陣列...

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 ...