差分約束 區間選點。c

2021-10-04 22:47:16 字數 966 閱讀 7931

區間選點

給定乙個數軸上的 n 個區間,要求在數軸上選取最少的點使得第 i 個區間 [ai, bi] 裡至少有 ci 個點,要求使用差分約束

輸入第一行乙個整數 n 表示區間的個數,接下來的 n 行,每一行兩個用空格隔開的整數 a,b 表示區間的左右端點。1 <= n <= 50000, 0 <= ai <= bi <= 50000 並且 1 <= ci <= bi - ai+1。

輸出乙個整數表示最少選取的點的個數

sample input:

53 7 3

8 10 3

6 8 1

1 3 1

10 11 1

sample output:

6思路:

#include

#include

#include

#include

#include

using

namespace std;

const

int n=

5e+5

;int maxx;

struct edge

e[n]

;int head[n]

,dis[n]

,tot;

bool visit[n]

;queue<

int> q;

void

add(

int u,

int v,

int w)

void

spfa

(int a)}}

}}intmain()

maxx++

;for

(int i=

0;i<=maxx;

++i)

spfa(0

);cout<;return0;

}

差分約束 區間選點

給定乙個數軸上的 n 個區間,要求在數軸上選取最少的點使得第 i 個區間 ai,bi 裡至少有 ci 個點 輸入第一行乙個整數 n 表示區間的個數,接下來的 n 行,每一行兩個用空格隔開的整數 a,b 表示區間的左右端點。1 n 50000,0 ai bi 50000 並且 1 ci bi ai 1...

區間選點 II 差分約束

題意 給定乙個數軸上的 n 個區間,要求在數軸上選取最少的點使得第 i 個區間 ai,bi 裡至少有 ci 個點 使用差分約束系統的解法解決這道題 input 輸入第一行乙個整數 n 表示區間的個數,接下來的 n 行,每一行兩個用空格隔開的整數 a,b 表示區間的左右端點。1 n 50000,0 a...

差分約束 解決區間選點問題

給定乙個數軸上的 n 個區間,要求在數軸上選取最少的點使得第 i 個區間 ai,bi 裡至少有 ci 個點。輸入第一行乙個整數 n 表示區間的個數,接下來的 n 行,每一行兩個用空格隔開的整數 a,b 表示區間的左右端點。1 n 50000,0 ai bi 50000 並且 1 ci bi ai 1...