1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define MAX 1005 5 6 int main(void) 7 { 8 int t,n; 9 int s[MAX][2]; 10 int sum,box,max,max_loc; 11 12 scanf("%d",&t); 13 while(t --) 14 { 15 sum = box = 0; 16 17 scanf("%d",&n); 18 for(int i = 0;i < n;i ++) 19 scanf("%d",&s[i][0]); //0号单元存天数 20 for(int i = 0;i < n;i ++) 21 { 22 scanf("%d",&s[i][1]); //1号单元存惩罚值 23 sum += s[i][1]; 24 } 25 for(int i = n;i >= 1;i --) 26 { 27 max = -1; 28 for(int j = 0;j < n;j ++) 29 if(s[j][0] >= i && s[j][1] > max) 30 { 31 max = s[j][1]; 32 max_loc = j; 33 } 34 if(max != -1) 35 { 36 box += max; 37 s[max_loc][1] = -1; 38 } 39 } 40 printf("%d\n",sum - box); 41 } 42 }
HDU 1789 Doing Homework again (贪心)
原文:http://www.cnblogs.com/xz816111/p/4167251.html