nowcoder 84 B 漂亮的樹

2021-08-19 11:29:19 字數 1205 閱讀 6622

題目鏈結

題目描述

街上有n棵樹,標號為1…n,第i棵樹的高度為ai。

定義這n棵樹是漂亮的,當且僅當

1. 對於所有的i,ai=an-i+1;

2. 對於1 <= i < n / 2 (不是整除),ai + 1= ai + 1;

比如說 「2 3 4 5 5 4 3 2」和「1 2 3 2 1」是漂亮的而「1 3 3 1」和「1 2 3 1」不是。

現在請問最少修改幾棵樹的高度(可以變大也可以變小),使得這些樹是漂亮的。

輸入描述:

第一行乙個整數n表示樹的數量( 1 <= n <= 100,000)。

第二行n個整數表示樹的高度( 1 <= ai <= 100,000)。

輸出描述:

輸出乙個整數表示最少修改樹的高度的數目。

示例1

輸入

3

2 2 2

輸出

1
示例2

輸入

4

1 2 2 1

輸出

0
考慮三個序列:

從a變成b不是很好想,不妨先找乙個輔助序列c,把a

i 和c

i 做差,差值相同的a

i 一定都屬於某乙個正確序列,那麼把a

i按差值分類,就相當於把含有這些a

i 的正確序列按差值分類。只需要找到含有a

i 最多正確序列就行了,答案就是n減去它含有的a

i 個數。

#include 

int n;

int arr[100005];

int f[100005];

//開乙個下標可以為負數的陣列

int data[200010] = ;

int* cnt= data+100005;

int main()

printf("%d",ans);

}

B樹 B 樹 B 樹 B 樹的區別

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...

B樹 B 樹 B 樹 B 樹的區別

即二叉查詢樹 二叉排序樹或二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比...

B樹 B 樹 B 樹 B 樹之間的關係

b樹 b tree樹即b樹,b即balanced,平衡的意思。因為b樹的原英文名稱為b tree,而國內很多人喜歡把b tree譯作b 樹,其實,這是個非常不好的直譯,很容易讓人產生誤解。如人們可能會以為b 樹是一種樹,而b樹又是另一種樹。而事實上是,b tree就是指的b樹。特此說明。先介紹下二叉...