第九屆藍橋杯省賽C B組 遞增三元組

2021-10-01 18:06:44 字數 1190 閱讀 7579

給定三個整數陣列

a=[a1,a2,…an],

b=[b1,b2,…bn],

c=[c1,c2,…cn],

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

1≤i,j,k≤n

ai輸入格式

第一行包含乙個整數 n。

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

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

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

輸出格式

乙個整數表示答案。

資料範圍

1≤n≤10^5,

0≤ai,bi,ci≤10^5

輸入樣例:

3

1 1 1

2 2 2

3 3 3

輸出樣例:

27
思路:

二分 + 字首和

對於每個b[i]在陣列c中找出比它大的元素個數,前後對對這些數求字首和。

對於每個a[i]在陣列b中找出比它大的最小元素b[j],然後利用前面的字首和s[n] - s[j - 1]就表示對於數字a[i]在陣列b和陣列c中能有多少對b,c能構成嚴格遞增對

#include#include#includeusing namespace std;

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

long long s[100010];

int main()

int j = l;

for (; j <= n; ++j) if (c[j] > target) break;

if (j <= n) s[i] = s[i - 1] + n - j + 1; //n - j + 1:在陣列c中比b[i]大的數字有多少

else s[i] = s[i - 1];

}long long ans = 0;

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

int j = l;

for (; j <= n; ++j) if (b[j] > target) break;

if (j <= n) ans += s[n] - s[j - 1];

}cout

}

2023年第九屆藍橋杯省賽 遞增三元組

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

第九屆藍橋杯 遞增三元陣列

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

遞增三元組(第九屆藍橋杯C )

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