caioj1400 差分約束(模版) 區間

2021-08-08 19:47:09 字數 1219 閱讀 8014

題目傳送門

//製作人:陳保良

//這種演算法的基礎是最短路,不會的請先學小白菜1088

#include

#include

#include

using

namespace

std;

struct bian

a[510000];int len,last[51000];

void ins(int x,int y,int d)

int sta[51000],d[51000],ru[51000];

bool v[51000];

int main()

for(int i=minn+1;i<=maxx;i++)

memset(v,0,sizeof(v));

memset(d,63,sizeof(d));

memset(ru,0,sizeof(ru));

top=0;

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

d[sta[top]]=0;//top必須是maxx,因為建邊是從y到x-1,而存y的是maxx,所以只能由maxx作為起點

//最短路用的是單向邊,反過來路徑長度就可能會增加

while(top!=0)}}

v[x]=0;

}printf("%d\n",d[maxx]-d[minn]);//輸出最小點到最大點的距離,即答案

return0;}

//差分約束的重點中的重點:約束式一定要化為y<=x+c的形式,否則模型直接的轉換會出錯

/*差分約束系統的定義

如果乙個系統由n個變數和m個約束條件組成,其中每個約束條件形如x[j]-x[i]<=b[k](1<=i,j<=n),(1<=k<=m)

則稱其為差分約束系統(system of difference constraints)。亦即,差分約束系統是求不等式組的解

*//*

差分約束系統的運用

在面對多種多樣的問題時,我們經常會碰到這樣的情況:往往我們能夠根據題目題面意思來建立一些簡單的模型,

但卻面對這些模型無從下手。這時我們應該意識到,也許能夠將這種模型與其他的模型之間搭起一座橋梁,

使我們能夠用更簡單直接的方式解決它。差分約束系統很好地將某些特殊的不等式組與圖相聯結,讓複雜的問題簡單化,

將難處理的問題用我們所熟知的方法去解決,它便是差分約束系統

*/

**裡說的文章:最短路的環

POJ3169差分約束 SPFA 差分約束

思路 假設i j 兩隻奶牛可以站在同乙個位置,但是必須公升序排列,所以有差分約束方程d i d i 1 0 對於兩隻有好感的奶牛有差分約束方程d j d i k 對於兩隻反感的奶牛有差分約束方程d i d j k 有了約束方程就可以spfa include include include inclu...

分糖果 差分約束

description 幼兒園裡有n 個小朋友,lxhgww 老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,lxhgww 需要滿足小朋友們的 k個要求。幼兒園的糖果總是有限的,l...

差分約束系統

差分約束 若 s a s b k 建一條b到a 的長度為k的邊 若s a s b k 建一條b到a 的長度為 k的邊 是求最小值的最長路 是求最大值的最短路 注意到最短路演算法的鬆弛操作 if d j d i w i j d j d i w i j 這其中的三角形不等式 d j d i w i j ...