給定乙個長度為 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對,分別是和,和,和。現給出乙...