JZOJ 1329 旅行 貪心

2022-09-18 01:18:09 字數 1065 閱讀 1225

description

input

輸入檔案的第1行為乙個正整數n,表示了這條路線的長度。

第2行有n個正整數,相鄰兩個正整數用空格隔開,描述了a[i]這個序列。

output

輸出檔案僅包括乙個非負整數,為最小的總體力消耗。

注意:答案可能超過2^31-1,請使用int64或者long long型別儲存答案。

sample input

3 3 4 1

sample output

3 【樣例說明】

將第2段路的高度調整為3,第3段路的高度調整為2,調整體力消耗為2。

路線序列變為3 3 2,穿越這條路線消耗體力為1。

所以總體力消耗為3。

【資料規模】

對於10%的資料,有n≤10;

對於30%的資料,有a[i]≤1000;

對於40%的資料,有n≤1000;

對於100%的資料,有n≤100000,a[i]≤10000000。

貪心大水法

從左到右掃一遍,列舉第i段路。如果要使得從i-1到i+1的體力消耗最小,那麼就要兩端距離間的差距最小。

①如果a[i-1]和a[i+1]都小於a[i],那麼就取兩個中較大的,將a[i]改變;

②如果a[i-1]和a[i+1]都大於a[i],那麼就取兩個中較小的,將a[i]的值改變。

**如下:

#include

#include

#include

using

namespace

std;

int a[100001],f[100001],n;

long

long ans=0;

int ps(int x)

int main()

for (int i=2;i<=n;i++) ans=ans+f[i]+abs(a[i]-a[i-1]);

printf("%lld",ans);

return

0;}

codeJan與旅行 (貪心)

題目 題意 有n個城市排成一排,按遞增給出城市座標,codejan不在任意乙個城市座標上。問 codejan訪問m個城市最少需要走多少公尺,每個城市可以多次訪問。解法 首先通過強大的觀察法我們得到最終一定是在兩個城市之間反覆橫跳,或者一次向乙個方向走到m個城市,這兩種方案。具體如何得到的 那麼結合我...

jzoj4249 遊戲 貪心

0 n 0 sim n 0 n的點,從i ii移動到j jj獲得aj j i a j j i aj j i 的價值。求最大價值。考慮貪心,每次移動到往後a ia i ai 最大的點。證明 反證明 我們假設有一種情況i ij a jaj 但是之間移動到j jj比先移動到i ii更優。但是若我們先移動到...

jzoj數字遊戲 貪心 DP

description 一行數字a1,a2,a3,an,有m個回合,每個回合必須從中選擇乙個數字擦去它,接著每個回合後剩下來的每個數字ai都要遞減乙個相應的值bi。如此重複m個回合,所有你擦去的數字之和就是你所得的分數。給出n,m,a數列和b數列,求所得的最多的分數。input 輸入檔案的第一行是乙...