CJOJ 2398 簡單的數列

2021-07-29 12:41:18 字數 1106 閱讀 2373

簡單的數列

乙個簡單的數列問題:

給定乙個長度為n的數列,求這樣的三個元素 ai,aj,ak 的個數,滿足 ai<aj>ak,且 i<j<k 。

第1行是乙個整數n(1<=n<=50000)。

接下來n行,每行乙個元素ai(0<=ai<=32767)。

乙個數,滿足 ai<aj>ak (i<j<k) 的個數。

5 1 2

3 4 1

6

資料範圍:

對於30%的輸入資料有n<=200。

對於80%的輸入資料有n<=10000。

對於100%的輸入資料有n<=50000。

歸併排序, 樹狀陣列 ,線段樹,平衡樹

樹狀陣列算兩次逆序對(從前往後一次,從後往前一次),最後將兩次結果相乘加入ans即可

#include #include #include #include #include #include #include #include #include #include #define l 50010

#define ll long long

using namespace std;

int n, c[l], a[l], q1[l], q2[l];

ll ans;

inline int lowbit (int x)

inline void updata(int x, int v)

inline int sum(int x)

int main()

memset(c, 0, sizeof(c));

for (int i = n; i >= 1; --i)

for (int i = 1; i <= n; ++i) ans += (q1[i] * q2[i]);

printf("%lld\n", ans);

return 0;

}

1、切記輸入的每乙個數都要加1,因為有為0的情況(考試痛失40分)

2、樹狀陣列每一次操作的複雜度是o(logn),不是o(nlogn),差點算錯了複雜度

3、求和不能超過陣列的範圍!

數列排序之簡單的氣泡排序

如題所述,這就是乙個簡單的用氣泡排序解決數列排序的方法與解釋。題目採用藍橋杯基礎試題裡的basic 13 數列排序 問題描述 給定乙個長度為n的數列,將這個數列按從小到大的順序排列。1 n 200 輸入格式 第一行為乙個整數n。第二行包含n個整數,為待排序的數,每個整數的絕對值小於10000。輸出格...

可變引數列表 簡單printf函式的實現

有時候形式引數不確定,ansi c採用可變引數列表的形式來實現這種函式,在stdarg.h中包括三個巨集 va list va start va list,pre arg va arg va list,type va end va list 作用分別是 建立乙個指標指向函式的最後乙個引數 取出typ...

乙個fibonacci數列簡單求和的問題

前段時間老師在講函式呼叫的時候,用fibonacci數列來演示了一下,因為以前沒怎麼接觸過fibonacci,所以當時很懵。當時讓求的是fibonacci數列中,第n位值為多少,當時老師寫的是 之後呢,老師留的做作業是 求fibonacci數列前n位的和,晚上自習的時候在想,求和的話必須需要用for...