贪心策略摘果子(洛谷P1478题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
贪心策略摘果子(洛谷P1478题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
P1478題目鏈接
分析
本題的低配版題目鏈接 → 題解
那個題就是純水題沒啥可寫的,我除了貼代碼無話可說,但這題吧,雖然不算難,但也可一說。
建議大家移步這里 → 精辟題解
這位爺寫了本題的暴力搜索、剪枝搜索、記憶化搜索、動態規劃(背包)、貪心的各種詳解,可以說對初學者來說很好啦。OrzOrzOrz……
顯然,本題既然可用貪心,貪心就是最快方案啦,我們只需要每次取最省力(最小代價)的一個果子,即可更快得到最優解。
貪心,妙不可言~~
順便簡單提一提貪心:
貪心算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的局部最優解。貪心算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無后效性,即某個狀態以前的過程不會影響以后的狀態,只與當前狀態有關。
之前我也簡單的提過貪心,貪心往往能取得更高的效率,但適用范圍不是那么廣泛,需要我們認真思考什么時候適合用什么時候不能用。當然,本題作為洛谷橙題,讀罷題意,貪心足矣……
請看我AC代碼吧!
AC代碼(Java語言描述)
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt(), strength = scanner.nextInt(), maxHeight = scanner.nextInt()+scanner.nextInt();int[] array = new int[101];for (int i = 0; i < num; i++) {int tempHeight = scanner.nextInt(), needStrength = scanner.nextInt();if (tempHeight <= maxHeight) {array[needStrength]++;}}scanner.close();int counter = 0, sum = 0;outer:for (int i = 0; i <= 100; i++) {while (array[i] > 0) {sum += i;if (sum <= strength) {counter++;array[i]--;} else {break outer;}}}System.out.println(counter);} }總結
以上是生活随笔為你收集整理的贪心策略摘果子(洛谷P1478题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】Matplotlib绘制
- 下一篇: 【Python】Matplotlib绘制