題目:
題意:有n個區間,[ai,bi]區間至少選擇ci個點,要滿足這些條件,最少要多少個點
思路:
d[v]-w>=d[u],d[i]-d[i-1] <= 1,d[i]-d[i-1] >= 0
v,u建負邊,i-1,i建正邊1,建負邊0,依舊是求最短路,maxn->minn
**:
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int inf = 0x3f3f3f3f;
const
int n = 50005;
struct edge
}e[n*5];
int n;
int head[n*5],d[n],tot;
bitset
< n<<1 > vis;
void init()
void add_edge(int s,int t,int d)
void spfa(int s)}}
}}int main()
for(int i = minn;i < maxn;i++)
add_edge(i,i+1,1),add_edge(i+1,i,0);
spfa(maxn);
printf("%d\n",-d[minn]);
}}
差分約束 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 ...