計蒜客 1269 順序三元組

2021-10-04 13:27:48 字數 1312 閱讀 2999

給定乙個長度為 nn 的陣列 a=[a_1, a_2, … a_n]a=[a1​

,a2​ ,…an​

],已知其中每個元素 a_iai​

的值都只可能是 1, 21,2 或者 33。

請求出有多少下標三元組 (i, j, k)(i,j,k) 滿足 1 \le i < j < k \le n1≤i輸入格式

第一行包含乙個整數 nn;

第二行包含 nn 個整數 a_1, a_2, … a_na1​

,a2​ ,…an​

。(1 \le a_i \le 3, 1 \le n \le 100000(1≤ai​

≤3,1≤n≤100000)。

輸出格式

乙個整數表示答案。

輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入複製

61 3 2 1 2 3

樣例輸出複製

3本題剛開始已看感覺可以用dp完成,於是就試了一下,結果就過了兩個case,超時了,後來查了一下,發現一種更巧妙的方法,控制在o(n)的時間之內完成,佩服

這是dp版本的,超時…

//@author:hairu,wu

//@from:ahut

#include

using

namespace std;

const

int max_n=

100001

;int a[max_n]

;int dp[max_n]

;int

main()

//dp[i]表示的是以i結尾的符合條件的種數

for(

int i=

0;i}

cout<

}

巧妙版的

//@author:hairu,wu

//@from:ahut

#include

using

namespace std;

typedef

long

long ll;

const

int max_n=

101000

;int a[max_n]

;int

main()

} ll cnt=0;

for(

int i=

0;i)else

if(a[i]==2

)else

if(a[i]==3

)}cout

}

hiho1550 順序三元組

給定乙個長度為n的陣列a a1,a2,an 已知其中每個元素ai的值都只可能是1,2或者3。請求出有多少下標三元組 i,j,k 滿足1 i j k n且ai aj ak。第一行包含乙個整數n 第二行包含n個整數a1,a2,an。1 ai 3 對於30 的資料,1 n 100 對於80 的資料,1 n...

指標A 簽到題(順序三元組)

給定乙個長度為n的陣列a a1,a2,an 已知其中每個元素ai的值都只可能是1,2或者3。請求出有多少下標三元組 i,j,k 滿足1 i j k n且ai aj ak。input 第一行包含乙個整數n 第二行包含n個整數a1,a2,an。1 ai 3 對於30 的資料,1 n 100 對於80 的...

等差三元組

題目 和是2組不同的等差三元組,除了等差的性質之外,還有個奇妙的地方在於 5 2 3 2 1 2 7 2 5 2 3 2 n 15。同這對三元組也存在同樣的性質 19 2 15 2 11 2 7 2 5 2 3 2 n 15。這種成對的三元組還有很多。當n 15時,有3對,分別是和,和,和。現給出乙...