>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...