街上有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)。i第二行n個整數表示樹的高度( 1 <= a
<= 100,000)。
輸出乙個整數表示最少修改樹的高度的數目。
示例1
32 2 2
1
示例2
41 2 2 1
0好久沒有做過思維題目了 。
感覺已經廢了。
這題斜率是已知的。
通過斜率求解非常迅速,
注意一點陣列下標為負數的情況。
所以我下標加了10w.
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include7using
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,...