標題 遞增三元組

2021-09-12 01:12:54 字數 1366 閱讀 2603

請你統計有多少個三元組(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為中繼點,這也是我沒想到的地方。

函式的運用不夠熟練

lower_bound(a,a+n,b)-a是在a陣列中尋找第乙個「大於等於」b的序號,

upper_bound(a,a+n,b)-a 是在a陣列中尋找第乙個「大於」b的序號。

區別在於是否有等於號,而且找到的位置是下標。如果沒找到,則是元素的數量。

找出比b小的a的個數,再找出大於b的c的個數,兩者行進相乘。

最後再相加

#include using namespace std;

int a[100005];

int b[100005];

int c[100005];

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);

long long sum = 0;

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

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

return 0;

}

標題 遞增三元組

給定三個整數陣列 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,c...

遞增三元組

遞增三元組 描述給定三個整數陣列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,...

遞增三元組

給定三個整數陣列 a a1,a2,an b b1,b2,bn c c1,c2,cn 請你統計有多少個三元組 i,j,k 滿足 1.1 i,j,k n 2.ai bj ck 輸入格式 第一行包含乙個整數n。第二行包含n個整數a1,a2,an。第三行包含n個整數b1,b2,bn。第四行包含n個整數c1,...