簡單的數列
乙個簡單的數列問題:
給定乙個長度為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...