HD-ACM算法專攻系列(23)——Crixalis's Equipment
阿新 • • 發佈:2017-07-26
true png cmp main print names ace esp 最大的
題目描述:
AC源碼:
此次考察貪心算法,解題思路:貪心的原則是使留下的空間最大,優先選擇Bi與Ai差值最大的,至於為什麽?這裏用只有2個設備為例,(A1,B1)與(A2,B2),假設先搬運A1,搬運的那一瞬間,實際將要占用的空間應該為A1+B2,那麽為了保證留下的空間最大,則應該有A1+B2<A2+B1成立,才能先搬運A1,即B1-A1>B2-B1。(n個設備可以兩兩做這樣的比較,來達到選擇的最優)
#include"iostream" #include"algorithm" using namespace std; struct Equipment { int A; int B; }; bool cmp(Equipment a, Equipment b) { return (a.B - a.A) > (b.B - b.A); } int main() { int t, v, n; bool flag; Equipment eq[1000]; scanf("%d", &t); for(int i = 0; i < t; i++) { scanf("%d %d", &v, &n); for(int j = 0; j < n; j++) { scanf("%d %d", &eq[j].A, &eq[j].B); } sort(eq, eq+n, cmp); flag = true; for(int j = 0; j < n; j++) { if(eq[j].B <= v) { v -= eq[j].A; } else { flag = false; break; } } if(flag) { printf("Yes\n"); } else { printf("No\n"); } } return 0; }
HD-ACM算法專攻系列(23)——Crixalis's Equipment