每日演算法 農夫約翰運輸牛(貪心演算法)

2021-10-18 23:09:00 字數 1009 閱讀 7374

/**

* 農夫約翰去砍柴,像往常一樣留下了n頭(2≤n≤10萬頭)牛在吃草。當他回來時,他驚恐地發現那群牛正在他的花園裡吃他美麗的花。為了儘量減少後續損失,fj決定立即採取行動,將每頭牛運回各自的穀倉。

* 每頭牛i在距離它自己的穀倉ti分鐘(1≤ti≤2,000,000)的位置。此外,在等待運輸時,她每分鐘會破壞di(1≤di≤100)朵花。無論他如何努力,fj每次只能將一頭牛運回牛棚。將奶牛i移動到它的穀倉需要2×ti分鐘(ti到那裡,ti返回)。fj從花圃出發,把牛送到牛棚,然後走回花叢,不需要額外的時間就可以到達下一頭需要運輸的牛那裡。

* 編寫乙個程式來確定fj應該以何種順序撿起奶牛,從而使被破壞的花朵總數最小化。

* 輸入

* 行1:乙個整數n

* 行2…n+1:每一行包含兩個用空格隔開的整數,ti和di,它們描述了一頭牛的特徵。

* 輸出

* 行1:被破壞的花朵總數。

* * 核心思路:(貪心演算法找出破壞效率最高的牛,先剔除)

* */

public class t1

//預計每頭牛的破壞效率(treemap根據key排序)

treemapcount = new treemap<>();

for (int i = 0; i < list.size() ; i++)

//找到破壞力最高的一頭牛

map.entrylastentry= count.lastentry();

int arr = list.get(lastentry.getvalue());

//運輸一頭牛花的時間

int time = 2* arr[0];

list.remove(arr);

//運輸當前牛實際破壞的花

int result = 0;

for (int i = 0; i //遞迴剩下的牛

result += test(list);

//結果數

return result;

}}

貪心演算法 牛客倒水

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 題目描述 有乙個大水缸,裡面水的溫度為t單位,體積為c公升。另有n杯水 假設每個杯子的容量是無限的 每杯水的溫度為t i 單位,體積為c i 公升。現在要把大水缸的水倒...

演算法 貪心演算法

把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...

演算法 貪心演算法

集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...