貪心 洛谷P4995 跳跳!

2021-10-07 06:45:11 字數 1906 閱讀 9689

洛谷p4996 跳跳!

題 目描

述\color題目描述

題目描述

你是乙隻小跳蛙,你特別擅長在各種地方跳來跳去。

這一天,你和朋友小 f 一起出去玩耍的時候,遇到了一堆高矮不同的石頭,其中第 i

ii塊的石頭高度為h

ih_i

hi​ 你估計著,從第 i

ii 塊石頭跳到第 j

jj 塊石頭上耗費的體力值為 (hi

−hj)

2(h_i - h_j) ^2

(hi​−h

j​)2

,從地面跳到第 i

ii 塊石頭耗費的體力值是 (hi

)2

(h_i) ^ 2

(hi​)2

。為了給小 f 展現你超級跳的本領,你決定跳到每個石頭上各一次,並最終停在任意一塊石頭上,並且小跳蛙想耗費盡可能多的體力值。

當然,你只是乙隻小跳蛙,你只會跳,不知道怎麼跳才能讓本領更充分地展現。

不過你有救啦!小 f 給你遞來了乙個寫著 ak 的電腦,你可以使用電腦程式幫你解決這個問題,萬能的計算機會告訴你怎麼跳。

那就請你——會寫**的小跳蛙——寫下這個程式,為你 noip ak 踏出堅實的一步吧!

輸 入格

式\color輸入格式

輸入格式

輸入一行乙個正整數 n

nn,表示石頭個數。

輸入第二行 n

nn 個正整數,表示第 i

ii 塊石頭的高度 h

ih_i

hi​。

輸 出格

式\color輸出格式

輸出格式

輸出一行乙個正整數,表示你可以耗費的體力值的最大值。

輸 入輸

出樣

例\color輸入輸出樣例

輸入輸出樣例

輸入 #1

2

2 1

輸出 #1

5
輸入 #2

3

6 3 5

輸出 #2

49
題目要你花費的體力最大而且全部都跳過,根據題目給的體力公式(hi

−hj)

2(h_i-h_j)^2

(hi​−h

j​)2

,要這個值大,很容易想到只要h

ih_i

hi​和h

jh_j

hj​的差大就行了。那我把體力存下來,排個序,然後一大一小這樣去取就行了。第乙個跳的石子一定要是最大值。

#include

#include

#include

using

namespace std;

using ll =

long

long

;const

double eps =

1e-7

;#define endl '\n'

#define pb(a) push_back(a)

#define all(x) x.begin(), x.end()

#define size(x) int(x.size())

#define sb(x) ((x) * (x))

int h[

310]

, hh[

310]

;int

main()

else

cnt++;}

printf

("%lld\n"

, ans)

;return0;

}

要開long long,不然只有50分t_t.

洛谷 P4995 跳跳! 貪心 2 8

你是乙隻小跳蛙,你特別擅長在各種地方跳來跳去。這一天,你和朋友小 f 一起出去玩耍的時候,遇到了一堆高矮不同的石頭,其中第 ii 塊的石頭高度為 h ihi 地面的高度是 h 0 0h0 0。你估計著,從第 ii 塊石頭跳到第 jj 塊石頭上耗費的體力值為 h i h j 2 hi hj 2,從地面...

洛谷P4995 跳跳!題解

簡單描述一下吧,就是說有n塊石頭,起始可以跳到任何一塊上面,接著也是,只不過每一塊石頭只能跳一次,求耗費的最大的體力 計算方法見鏈結 這道題一看,我們要最大化我們的體力值,說明我們的每一次要盡可能的跳的遠,此時我們就可以採用貪心的思想,把每一次的跳躍體力值最大化,那麼就能得到體力值總和的最大化。先把...

題解 P4995 跳跳!

說實話這個題我一開始想了好久dfs超時得了30可能因為我太弱了 吃得苦中苦方為人上人現在終於a了當然體會更多 1 首先 這是個真的真的貪心題 貪心思路就是每次都從未跳過得最高的 或最低的 跳到最低處 最高處 這樣差值才最大 2 知道貪心思路了就要寫好 qaq 寫法有很多種,像我這種蒟蒻就只會寫這一種...