【解题报告】【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 }