标签:des style blog http color java os io
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2795 Accepted Submission(s): 1141
贪心.
贪心策略:当前放的物品所需的空间 Bi 和 下一个需要放的物品所占用空间 Aj 之和是否大于 当前物品所占用空间 Ai 和下一个物品所需空间 Bi 之和.
也就是(Bi+Aj)>(Bj+Ai)的话 就先放物品i 否则 先放物品j
需要空间大的先放.
可以用一组案例来思考一下这个贪心策略:
20 3
10 20
3 4
7 7
___________
代码如下:
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 #define MAX 1001 7 struct node 8 { 9 int a; 10 int b; 11 }; 12 struct node x[MAX]; 13 int v,n; 14 bool cmp(struct node x,struct node y) 15 { 16 if(x.b==y.b) return x.a>y.a; 17 return (x.b-x.a)>(y.b-y.a); 18 } 19 void init() 20 { 21 memset(x,0,sizeof(x)); 22 } 23 void read() 24 { 25 int i; 26 scanf("%d %d",&v,&n); 27 for(i=0;i<n;i++) 28 scanf("%d %d",&x[i].a,&x[i].b); 29 sort(x,x+n,cmp); 30 } 31 void cal() 32 { 33 int i; 34 int res=v; 35 for(i=0;i<n;i++) 36 { 37 if(res<0||res<x[i].b) 38 { 39 res-=x[i].b; 40 break; 41 } 42 res-=x[i].a; 43 } 44 if(res>=0) printf("Yes\n"); 45 else printf("No\n"); 46 } 47 void solve() 48 { 49 init(); 50 read(); 51 cal(); 52 } 53 54 int main() 55 { 56 int t; 57 scanf("%d",&t); 58 while(t--) 59 { 60 solve(); 61 } 62 return 0; 63 }
Hdu 3177 Crixalis's Equipment,布布扣,bubuko.com
标签:des style blog http color java os io
原文地址:http://www.cnblogs.com/By-ruoyu/p/3905586.html