洛谷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 寫法有很多種,像我這種蒟蒻就只會寫這一種...