給定乙個長度為 nn 的數列 a1,a2,…,ana1,a2,…,an,每次可以選擇乙個區間 [l,r],使下標在這個區間內的數都加一或者都減一。
求至少需要多少次操作才能使數列中的所有數都一樣,並求出在保證最少次數的前提下,最終得到的數列可能有多少種。
輸入格式
第一行輸入正整數nn。
接下來nn行,每行輸入乙個整數,第i+1行的整數代表aiai。
輸出格式
第一行輸出最少操作次數。
第二行輸出最終能得到多少種結果。
資料範圍
00≤ai<21474836480≤ai<2147483648
輸入樣例:41
122輸出樣例:12
#include
#include
#include
#include
using
namespace std;
const
int n =
100010
;typedef
long
long ll ;
int n;
int a[n]
, b[n]
;int
main()
序列演算法 字首和與差分
一般的字首和是對於陣列的求和,即對陣列的某一子陣列進行求和,即sum i,j sum i sum j 1 不僅如此字首和還能用於任何含可逆運算的運算子包括異或xor。上述的子陣列和的問題屬於陣列固定,大量訪問的問題優化。下面給出乙個大量做區間加的情況 給定乙個序列a 有很多次操作,每個操作形如 a ...
字首和與差分
數列的字首和 sum i 表示a 1 a i 的和 用處1 求i j的和sum j sum i 1 用處2 區間修改。設定乙個change陣列。當區間 i,j 上要加k時,我們令change i k,令change j 1 k。如果我們對change陣列求字首和的話,字首和sum change i ...
字首和與差分
從陣列第乙個開始累加 s i s i 1 a i 求區間 l,r 的和,o 1 複雜度sum s r s l 1 遞推s i j s i j s i 1 j s i j 1 s i 1 j 1 例題 雷射炸彈一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n n 1000...