問題描述
在數列 a[1], a[2], …, a[n] 中,如果對於下標 i, j, k 滿足 0 < i < j < k < n + 1 且 a[i]< a[j] < a[k],
則稱 a[i], a[j], a[k] 為一組遞增三元組,a[j] 為遞增三元組的中心。
給定乙個數列,請問數列中有多少個元素可能是遞增三元組的中心。
輸入格式
第一行包含乙個整數 n。
第二行包含 n 個整數 a[1], a[2], …, a[n],相鄰的整數間用空格分隔,表示給定的數列。
輸出格式
乙個整數,表示答案。
樣例輸入
51 2 5 3 5
樣例輸出
2樣例說明
a[2] 和 a[4] 可能是三元組的中心。
資料範圍
2 ≤ n ≤ 1000,0 ≤ a[i] ≤ 10000。
題解一
二重迴圈:
解題步驟
:
直接列舉中心點i
;
判斷[1, i - 1]
中是否存在小於 a[i] 的數,若存在,則flag1 = true
;
判斷[i + 1, n]
中是否存在大於 a[i] 的數,若存在,則flag2 = true
;
若flag1
、flag2
同時為true
,說明i
為中心點,那麼就讓答案+1
;
題解二#include
using
namespace std;
const
int n =
10010
;int n;
int a[n]
;int
main()
for(
int k = i +
1; k <= n; k ++)if
(a[i]
< a[k])if
(flag1 && flag2) ans ++;}
cout << ans << endl;
return0;
}
一重迴圈:
解題思路
:
用minv
維護i
前面出現過的最小值;
用maxv
維護i
後面出現過的最大值;
#include
#include
using
namespace std;
const
int n =
10010
;int n;
int a[n]
, minv[n]
, maxv[n]
;int
main()
第十一屆藍橋杯
問題描述 小藍要為一條街的住戶製作門牌號。這條街一共有 2020 位住戶,門牌號從 1 到 2020 編號。小藍製作門牌的方法是先製作 0 到 9 這幾個數字字元,最後根據需要將字 符貼上到門牌上,例如門牌 1017 需要依次貼上字元 1 0 1 7,即需要 1 個 字元 0,2 個字元 1,1 個...
第十一屆藍橋杯模擬賽 反倍數
問題描述 給定三個整數 a,b,c 如果乙個整數既不是 a 的整數倍也不是 b 的整數倍還不是 c 的整數倍,則這個數稱為反倍數。請問在1 至 n 中有多少個反倍數。輸入格式 輸入的第一行包含乙個整數 n。第二行包含三個整數 a,b,c,相鄰兩個數之間用乙個空格分隔。樣例輸出 輸出一行包含乙個整數,...
第十一屆藍橋杯模擬賽 凱撒密碼
問題描述 給定乙個單詞,請使用凱撒密碼將這個單詞加密。凱撒密碼是一種替換加密的技術,單詞中的所有字母都在字母表上向後偏移 3 位後被替換成密文。即 a 變為 d,b 變為 e,w 變為 z,x 變為 a,y 變為 b,z 變為 c。例如,lanqiao 會變成 odqtldr。輸入格式 輸入一行,包...