Doing Homework again

来源:互联网 发布:淘宝收藏宝贝链接 编辑:程序博客网 时间:2024/05/22 09:22

//HDOJ1789

http://acm.hdu.edu.cn/showproblem.php?pid=1789
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 1010
struct cj    
{
 int a,b;
}c[N];
int cmp(cj x,cj y)    //结构体保证 排序使截止时间和成绩变化一致
{                     //贪较大的成绩以及写较多的作业
 if(x.b!=y.b)
 return x.b>y.b;
 else
 return x.a<y.a;
}
int main()
{
 int T,n,i,j,lap,s;
 int d[N];
 cin>>T;
 while(T--)
 {
  memset(d,0,sizeof(d));
  s=0;
  cin>>n;
  for(i=0;i<n;i++)
  cin>>c[i].a;
   
  for(i=0;i<n;i++)
  cin>>c[i].b;
  sort(c,c+n,cmp);  //对c进行排序
  for(i=0;i<n;i++)
  {
   lap=0;
   for(j=c[i].a;j>0;j--)
   {
   if(d[j]==0)
   {
   d[j]=1;
   lap=1;      //d[N]数组用于标记已经被用的那一天
   break;
      }
      }
      if(!lap)    //lap判断是否有可用的一天,没有则加入不能得到的成绩
      s+=c[i].b;
  }
  cout<<s<<endl;
 }
 return 0;
}

0 0
原创粉丝点击