AcWing 1236 遞增三元組

2022-06-07 21:54:11 字數 608 閱讀 8944

原題鏈結

考察:雙指標 or 二分排序 or 字首和

思路:n<=105 n2的時間複雜度也會超時,所以我們只能列舉乙個數,這就必須要利用乘法原理求得答案,已知題目要求 ai

jk如果我們列舉aior ck可以發現無法省略其他層列舉,而我們列舉b,c與a就能利用乘法原理,找到小於bj與大於bj的數,兩者相乘累加得到答案.

關於怎麼找的問題,可採用的演算法有:

雙指標二分排序

字首和.設sum[i]陣列,表示a or c中 小於 or 大於i的數出現多少次.

1 #include 2 #include 3 #include 4

using

namespace

std;

5const

int n = 100010

;6 typedef long

long

ll;7

inta[n],b[n],c[n];

8ll ans;

9int

main()

1025 printf("

%lld\n

",ans);

26return0;

27 }

1236 遞增三元組

傳送門 這道題是用模擬,如果使用暴力的話,顯然需要3重迴圈,然後再寫乙個判斷條件。那麼我們就要從這三重迴圈下手進行優化,根據資料範圍可以知道總的時間複雜度大概是o n 或者o nlogn 那三重迴圈我們只能保留一重迴圈,觀察發現保留a陣列的迴圈和保留c陣列的迴圈本質是一樣的,但是如果保留a陣列的迴圈...

遞增三元組

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