區間選點
給定乙個數軸上的 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...