給定 n 個區間$ [ai,bi]$和 $n \(個整數\) ci$。
你需要構造乙個整數集合 z,使得∀i∈[1,n],z 中滿足ai≤x≤bi的整數 x 不少於 ci 個。
求這樣的整數集合 z 最少包含多少個數。
輸入格式
第一行包含整數 n。
接下來n行,每行包含三個整數ai,bi,ci。
輸出格式
輸出乙個整數表示結果。
資料範圍
1≤n≤50000,
0≤ai,bi≤50000,
1≤ci≤bi−ai+1
輸入樣例:
53 7 3
8 10 3
6 8 1
1 3 1
10 11 1
輸出樣例:
6
#includeusing namespace std;
const int n=5e4+5;
int st,ed,m,te,tail[n],d[n];
bool vis[n];
struct e_
e[n*3];
inline void add(int u,int v,int w)
; tail[u]=te;
}void spfa()
}} }
}int main()
for(int i=st;i題目描述
笨笨種了一塊西瓜地,但這塊西瓜地的種植範圍是一條直線。
笨笨在一番研究過後,得出了m個結論,這 m個結論可以使他收穫的西瓜最多。
笨笨的結論是這樣的:
從西瓜地b處到e處至少要種植t個西瓜,這個範圍的收穫就可以最大化。
笨笨不想那麼辛苦,所以他想種植的西瓜盡量少,而又滿足每乙個所得的結論。
輸入格式
第一行兩個數n,m,表示笨笨的西瓜地長n,笨笨得出m個結論。
接下來m行表示笨笨的m個結論,每行三個數b,e,t。
輸出格式
輸出笨笨最少需種植多少西瓜。
樣例樣例輸入
9 41 4 2
4 6 2
8 9 2
3 5 2
樣例輸出
5
資料範圍與提示
\(1<=n<=5000\)
\(0<=m<=3000\)
\(1<=b<=e<=n\)
\(0<=t<=e-b+1\)
由題:\(d(e)-d(b-1)>=t\)
\(d(i)-d(i-1)>=0\)
\(d(i)-d(i+1)>=-1\)
#includeusing namespace std;
const int n=5e3+5,m=8e3+5;
int t,te,n,m,tail[n],d[n];
bool vis[n];
struct e_
e[m];
void add(int u,int v,int w)
; tail[u]=te;
}void spfa()
}// cout<
為了防止存在多個連通塊,並且存在負環的聯通塊與節點1不相連導致判斷失誤,新增超級原點。
1.為了保證超級原點可以到每個點,並且不影響真正更新結果,所以將邊權定為\(d[0]-5\)。
如果定為0,每乙個點的d都會為0,會影響正確答案。
2.在spfa初始新增操作時,除了初始化超級原點0,還要初始化起點。如果不初始化起點,d[1]=d[0]-5,而每個點被0更新後都是d[0]-5,則起點無法更新任何點。
新增超級原點,相當於讓整張圖有第二個起點,所以兩個起點都要進行初始化。
#includeusing namespace std;
const int n=1e3+5,m=2e4+5;
int n,ml,md,te,tail[n],cnt[n],d[n];
bool vis[n];
struct e_
e[m+n];
void add(int u,int v,int w)
; tail[u]=te;
}bool spfa()
e[n*3];
inline void add(int u,int v,int w)
; tail[u]=te;
}bool spfa()
}} }
return 1;
}int main()
case 2:
case 3:
case 4:
case 5:
} }for(int i=1;i<=n;++i) add(0,i,1);
if(!spfa()) printf("-1");
else
}
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 ...