給定三個整數陣列
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。輸出格式 乙個整數表示答...