标签:des style blog color io os ar 使用 java
3 3 3 3 3 10 5 1 3 1 3 1 6 2 3 7 1 4 6 4 2 4 3 3 2 1 7 6 5 4
0 3 5#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int str[1010]; //用来标记该天是否占用,刚开始都未使用标记0,用过则标记1。 struct st { int time,fen; }data[1010]; int cmp(st a,st b) //科目按扣分从高到低排序,如果扣分相同,则科目期限短的考前。 { if(a.fen!=b.fen) return a.fen>b.fen; else return a.time<b.time; } int main() { int i,j,T,n; scanf("%d",&T); while(T--) { memset(str,0,sizeof(str)); scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&data[i].time); } for(i=0;i<n;i++) { scanf("%d",&data[i].fen); } sort(data,data+n,cmp); int sum=0; for(i=0;i<n;i++) { j=data[i].time; while(j) //将扣分多的科目优先放到期限的最后一天完成。 { if(!str[j]) //如果那天未被占用,占用那天。跳出while循环,再考虑扣分次多的那个科目。 { str[j]=1; break; } j--; // 如果那天已经被占用,考虑前一天是否被占用。 } if(j==0) sum+=data[i].fen; //如果在期限之内的所有天数均已经被占用,则不得不扣分。 } printf("%d\n",sum); } return 0; }
标签:des style blog color io os ar 使用 java
原文地址:http://blog.csdn.net/hdd871532887/article/details/40370183