【解题报告】【HDOJ1789】【贪心算法】Doing Homework again

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789

 1 #include<stdio.h>
 2 struct node{
 3     int x,y;
 4 };
 5 int main()
 6 {
 7     struct node a[1001];
 8     int record[1001],flag,sum,i,j,t1,n,T,t2;
 9     //freopen("1.txt","r",stdin);
10     scanf("%d",&T);
11     while(T--)
12     {
13         scanf("%d",&n);
14         sum=0;
15         for(i=1;i<=n;i++){ scanf("%d",&a[i].x); record[i]=0;}
16         for(i=1;i<=n;i++) scanf("%d",&a[i].y);
17         for(i=1;i<=n;i++)
18         {
19             for(j=i;j<=n;j++)
20                 if(a[j].y>a[i].y)
21                 {
22                     t1=a[i].y;
23                     t2=a[i].x;
24                     a[i].y=a[j].y;
25                     a[i].x=a[j].x;
26                     a[j].y=t1;
27                     a[j].x=t2;
28                 }
29         }
30         //for(i=1;i<=n;i++) printf("<%d>",a[i].x);
31         for(i=1;i<=n;i++)
32         {
33             flag=1;
34             for(j=a[i].x;j>0;j--)
35             {
36                 if(record[j]==0)
37                 {
38                     record[j]=1;
39                     flag=0;
40                     break;
41                 }
42             }
43             if(flag) sum+=a[i].y;
44         }
45         printf("%d\n",sum);
46     }
47     return 0;
48 }

 

posted on 2012-07-21 18:56  coding封神  阅读(160)  评论(0编辑  收藏  举报

导航