新增鏈結描述
結論:根據完成的時間排序。
證明:假設交代任務時間為a,完成任務時間為b。選取n個人之中的兩個人進行觀察,這兩個人之間的順序對其他人不產生影響,假設b1 > b2,當b1在前面的時候,二者為max1(a1+a2+b2,a1+b1),當b1在後面的時候max2(a2+b2,a1+a2+b1),因為b1 > b2,觀察max2(a2+b2,a1+a2+b1) = a1 + a2 + b1,顯然其與max1中的兩項比較,a1 + a2 + b1 > a1 + a2,a1 + a2 + b1 >a1 + b1,當二者順序不同的時候,max1 < max2 , 顯然 max1 更優 ,即應該是完成任務時間長的在前面。
附上 vegetable 的**。
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
typedef pair<
int,
int> pii;
const
int n=
1010
;int n;
struct node
}a[n]
;int
main()
printf
("case %d: %d\n"
,t++
,ans);}
return0;
}
uva 11729 貪心 STL 應用
這道題沒有什麼難度 只需要建立乙個結構體 存當前部下的任務交待時間和執行任務所消耗的時間就行 之後按執行任務消耗時間的從大到小排序 如果消耗時間相等 就讓所用交代時間短的排在前面 讓消耗時間多的先執行 利用貪心 完成 其實題目沒有什麼難度 主要是 學會應用的stl容器的vector 下面貼出 inc...
uva11729(貪心,藍書第2頁)
想了想,這個貪心畢竟把我給騙到了,所以還是寫個題解。不難發現,最後無論怎樣都至少需要付出sigma b i 的時間 而影響最終時間的,只有j i 而已,而最佳的方法當然是時間 長的先交代,當然,這只是感覺而已,證明見藍書吧。這些貪心的分析方法就一種,貪心大總結裡面有。code include inc...
UVA11729突擊戰(匯報和執行任務)
題意 你是乙個長官,有一些士兵要跟你先匯報任務後在去執行任務,每次只能接受乙個人的匯報,但是每一時刻可以有多個士兵在執行任務,問所有任務執行完要的最小時間。思路 按執行任務時間從大到小排序來執行就行了,至於為什麼貪心的策略是這個我是這麼想的,首先任何乙個人執行任務的順序都不會影響他的匯報和幹活時間,...