區間操作 差分

2021-10-11 02:19:00 字數 856 閱讀 6806

>link

>description

對於乙個初始值全為0的序列,每次操作可以對乙個[l,

r]

[l,r]

[l,r

]區間的值全部加1,問最少多少次操作達到a

aa,並由字典序從小到大輸出方案

>解題思路

差分陣列,對於每次操作相當於乙個+1+1

+1和− 1-1

−1操作,我們記錄下每次+1+1

+1的位置和−1-1

−1的位置,最終答案使其一一對應

>**

#include 

#include

#include

#include

#define n

100010

using namespace std;

int n, a, l[n*

2], r[n*

2], p, cl, cr;

int main()

while

(p >

0) p--

, r[

++cr]

= n;

printf

("%d\n"

, cl)

;for

(int i =

1; i <= cl; i++

)printf

("%d %d\n"

, l[i]

, r[cr - i +1]

);return0;

}

差分約束 區間

給定 n 個區間 ai bi 和n個整 數c i a i,b i 和 n 個整數 c i ai b i 和 n個整數 ci 你需要構造乙個整數集合 z,使得 i 1,n z 中滿足ai x bi的整數 x 不少於 c ic i ci 個。求這樣的整數集合 z 最少包含多少個數。輸入格式 第一行包含整...

區間(差分約束)

題目描述給定 n 個區間 ai,bi 和 n 個整數 ci。你需要構造乙個整數集合 z,使得 i 1,n z 中滿足ai x bi的整數 x 不少於 ci 個。求這樣的整數集合 z 最少包含多少個數。輸入格式 第一行包含整數 n。接下來n行,每行包含三個整數ai,bi,ci。輸出格式 輸出乙個整數表...

差分約束 區間選點

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