2023年藍橋杯B組c c 第六題詳解

2021-09-30 16:56:57 字數 1558 閱讀 8999

給定三個整數陣列

a = [a1, a2, … an],

b = [b1, b2, … bn],

c = [c1, c2, … cn],

請你統計有多少個三元組(i, j, k) 滿足:

1 <= i, j, k <= n

ai < bj < ck

【輸入格式】

第一行包含乙個整數n。

第二行包含n個整數a1, a2, … an。

第三行包含n個整數b1, b2, … bn。

第四行包含n個整數c1, c2, … cn。

對於30%的資料,1 <= n <= 100

對於60%的資料,1 <= n <= 1000

對於100%的資料,1 <= n <= 100000 0 <= ai, bi, ci <= 100000

【輸出格式】

乙個整數表示答案

【樣例輸入】

31 1 1

2 2 2

3 3 3

【樣例輸出】

27資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

將三個陣列都進行排序,然後列舉b中的數值,

在a中找到所有比b[i]小的元素,在c中找到所有比b[i]大的元素

兩者相乘即可,將每一輪的乘積進行相加,就是結果值

在查詢元素的時候,使用了 algorithm 裡面的內建函式

lower_bound():查詢大於或者等於b[i]的第乙個位置

upper_bound():查詢大於b[i]的第乙個位置

一般的使用方法是:lower_bound(a, a+n, b[i]) - a;

則會返回等於或者大於b[i]的第乙個元素位置

#include #include #include #define max 100005

using namespace std;

int a[max], b[max], c[max];

int main()

for(int i = 0; i < n; i++)

for(int i = 0; i < n; i++)

sort(a, a+n);

sort(b, b+n);

sort(c, c+n);

int sum = 0;

for(int i = 0; i < n; i++)

//cout << upper_bound(c, c+n, b[2])-c << endl;

printf("%d\n", sum);

return 0;

}

2015藍橋杯b組c c 第六題,加法變乘法

加法變乘法 我們都知道 1 2 3 49 1225 現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015 比如 1 2 3 10 11 12 27 28 29 49 2015 就是符合要求的答案。請你尋找另外乙個可能的答案,並把位置靠前的那個乘號左邊的數字提交 對於示例,就是提交10 思路 ...

2023年藍橋杯省賽A組第六題 航班時間

題目 小h前往美國參加了藍橋杯國際賽。小h的女朋友發現小h上午十點出發,上午十二點到達美國,於是感嘆到 現在飛機飛得真快,兩小時就能到美國了 小h對超音速飛行感到十分恐懼。仔細觀察後發現飛機的起降時間都是當地時間。由於北京和美國東部有12小時時差,故飛機總共需要14小時的飛行時間。不久後小h的女朋友...

2023年藍橋杯C C 組B組第二題

include includeint a 30 int fun1 int num for int j last printf n if getasynckeystate 48 sum if j 29 if go 0 if k 27 a k 0 else if go 1 else if go 2 把剩...