HDU解题报告——1789

来源:互联网 发布:网页美工和淘宝美工 编辑:程序博客网 时间:2024/04/25 16:55

  贪心啊,现在彻底凌乱了,看的一本算法设计的书上有讲解了个区间最小延迟问题,和1074彻底混一起了,郁闷啊!这一题就是按减分从高到低排序,完了建一个mark数组记录那一天被分配,尽量靠近截止日期,若没有时间则算为延迟,扣分。代码如下:

#include <iostream>#include <algorithm>using namespace std;struct homework{int d,r;}h[1010];bool cmp(struct homework a,struct homework b){if(a.r==b.r) return a.d<b.d;return a.r>b.r;}int main(){int t;cin>>t;while(t--){int n,mark[1010]={0};cin>>n;for(int i=1;i<=n;i++) cin>>h[i].d;for(int i=1;i<=n;i++) cin>>h[i].r;sort(h+1,h+n+1,cmp);int r=0;for(int i=1;i<=n;i++){int j=h[i].d;while(j>=1&&mark[j]) j--;if(j==0) r+=h[i].r;else mark[j]=1;}cout<<r<<endl;}return 0;}


 

0 0