第十一屆藍橋杯模擬賽 遞增三元組

2021-10-05 18:29:05 字數 1678 閱讀 4782

問題描述

在數列 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

flag1flag2同時為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。輸入格式 輸入一行,包...