POJ 1201 Intervals(差分約束)

2021-08-08 01:40:10 字數 825 閱讀 2205

題目:

題意:有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 ...