漂亮的樹 思維題

2022-05-01 07:15:12 字數 999 閱讀 8352

街上有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 <= a

i

<= 100,000)。
輸出乙個整數表示最少修改樹的高度的數目。

示例1

3

2 2 2

1

示例2

4

1 2 2 1

0

好久沒有做過思維題目了 。

感覺已經廢了。

這題斜率是已知的。

通過斜率求解非常迅速,

注意一點陣列下標為負數的情況。

所以我下標加了10w.

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 

7using

namespace

std;

8const

int maxn = 2e5 + 10;9

inta[maxn], b[maxn];

10int

main()

20int ans = 0;21

for (int i = 0 ; i < 200000 ; i++)

24 printf("

%d\n

", n -ans);25}

26return0;

27 }

線段樹 思維題 樓房重建

小a的樓房外有一大片施工工地,工地上有n棟待建的樓房。每天,這片工地上的房子拆了又建 建了又拆。他經常無聊地看著窗外發呆,數自己能夠看到多少棟房子。為了簡化問題,我們考慮這些事件發生在乙個二維平面上。小a在平面上 0,0 點的位置,第i棟樓房可以用一條連線 i,0 和 i,hi 的線段表示,其中hi...

牛客練習賽16 B 漂亮的樹 思維

這道題我第一次寫的時候,我的想法是正著去模擬遍歷最小的變動次數,最後沒寫出來,好像這個思路不太對。正確的方法是反向去思考,我們先得到乙個初始化為題目要求的pre陣列,為了解釋的清楚一點 這裡描述的和 不太一樣 在ans陣列裡輸入n個數,然後我們需要求出對應的第i個數的ans i pre i 的差值的...

P1268 樹的重量(思維題)

題目描述 樹可以用來表示物種之間的進化關係。一棵 進化樹 是乙個帶邊權的樹,其葉節點表示乙個物種,兩個葉節點之間的距離表示兩個物種的差異。現在,乙個重要的問題是,根據物種之間的距離,重構相應的 進化樹 令n 用乙個n上的矩陣m來定義樹t。其中,矩陣m滿足 對於任意的i,j,k,有m i,j m j,...