51Nod 1615跳躍的傑克(貪心)

2022-06-30 07:39:07 字數 734 閱讀 8388

題目:

傑克最近正在努力鍛鍊他的跳躍技能。當前他正站在x座標軸原點上。他想跳到座標(x,0)上,為了達到訓練效果,他決定首次跳躍的距離是1,之後每一次跳躍的距離將會比上一次跳躍的距離大1個單位。每一次跳躍,他可以選擇往左或者往右跳。他很好奇至少要經過多少次跳躍才能到達終點。

輸入單組測試資料。

輸入資料只包含整數x(-10^9 <= x <= 10^9)。

輸出輸出傑克到達終點所需要的最少的跳躍次數。

輸入樣例

2輸出樣例

3解析:貪心思想,假如能直接跳到終點那就直接跳。要是不能跳到終點,那肯定是要往回跳一次的,實際往回跳的距離是2*x,那最少的跳躍次數肯定是你超過終點前的次數 + (當前位置 - 終點位置)是偶數時的次數。為什麼這麼說,舉個例子就很明顯,假如你的終點是7,前三次跳到的位置是6,那這時候肯定還要往前跳,第四次跳就是到10,這時候(10-7)= 3,是乙個奇數,那我假如讓前面的某一次跳躍往左跳,比如我讓第二次往左跳,那就是10 - 2 * 2 = 6,當前位置就是6,顯然不能達到終點,那此時可以選擇繼續往前跳,下一步跳到15,而(15-7) = 8,這時候是偶數了,8 / 2 = 4,說明我可以在第四次跳躍的時候往左邊跳,也就是15 - 2 * 4 = 7,這時候就跳到終點,是最優策略。

ac**:

#includeusing namespace std;

int main()

} return 0;

}

51Nod 1615 跳躍的傑克

1615 跳躍的傑克 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 傑克最近正在努力鍛鍊他的跳躍技能。當前他正站在x座標軸原點上。他想跳到座標 x,0 上,為了達到訓練效果,他決定首次跳躍的距離是1,之後每一次跳躍的距離將會比上一次跳躍的距離大1個單位。每一次跳...

51 nod 最高的獎勵

有n個任務,每個任務有乙個最晚結束時間以及乙個對應的獎勵。在結束時間之前完成該任務,就可以獲得對應的獎勵。完成每乙個任務所需的時間都是1個單位時間。有時候完成所有任務是不可能的,因為時間上可能會有衝突,這需要你來取捨。求能夠獲得的最高獎勵。input 第1行 乙個數n,表示任務的數量 2 n 500...

51Nod 1241 特殊的排序

題目傳送門 分析 之前想的是求lis,後面發現這組資料會出問題 3 1 2 4 5 6。其實這裡的lis還應當滿足前後兩個元素的值相差為1。比如上面的最長子串行為 3 4 5 6,而不是1 2 4 5 6。即只需移動1 2即可。即如果n個數最長連續上公升子串行 這裡的連續指數值上連續,即前後相差1 ...