首页 技术 正文
技术 2022年11月8日
0 收藏 994 点赞 1,467 浏览 2396 个字

Doing Homework again

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 13847    Accepted Submission(s): 8036

Problem DescriptionIgnatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in the homework after the deadline, the teacher will reduce his score of the final test. And now we assume that doing everyone homework always takes one day. So Ignatius wants you to help him to arrange the order of doing homework to minimize the reduced score. InputThe input contains several test cases. The first line of the input is a single integer T that is the number of test cases. T test cases follow.
Each test case start with a positive integer N(1<=N<=1000) which indicate the number of homework.. Then 2 lines follow. The first line contains N integers that indicate the deadlines of the subjects, and the next line contains N integers that indicate the reduced scores. OutputFor each test case, you should output the smallest total reduced score, one line per test case. Sample Input333 3 310 5 131 3 16 2 371 4 6 4 2 4 33 2 1 7 6 5 4Sample Output0 35

/*    Name: hdu--1798--Doing Homework again    Copyright: 2017 日天大帝    Author: 日天大帝    Date: 21/04/17 15:32    Description: 贪心,思路让当前分数大的替换当前分数小的作业*/#include<iostream>#include<queue>#include<cstring>#include<algorithm>using namespace std;struct work{    int score,deadline;    bool operator<(const work &a)const{        return score>a.score;    }}arr[];bool cmp(work a,work b){    return a.deadline<b.deadline;}priority_queue<work> q;//按照分数排序int main(){    ios::sync_with_stdio(false);    int T;cin>>T;    while(T--){        memset(arr,,sizeof(arr));        while(!q.empty())q.pop();        int n;cin>>n;        ; i<n; ++i)cin>>arr[i].deadline;        ; i<n; ++i)cin>>arr[i].score;        ,ans = ;        sort(arr,arr+n,cmp);//按照时间排序        ; i<n; ++i){            q.push(arr[i]);            if(t < arr[i].deadline){                t++;continue;            }            ans += q.top().score;            q.pop();        }        cout<<ans<<endl;    }    ;}
/*大神的代码,优先队列和排序很巧妙*/#include <cstdio>#include <cstring>#include <iostream>#include <string>#include <algorithm>#include <map>#include <set>#include <queue>#include <utility>#include <vector>#include <iterator>using namespace std;typedef long long ll;typedef pair<int, int> P; << ;const int INF = 0x3f3f3f3f;P arr[MAX_N];int main() {    //ios::sync_with_stdio(false);    //cin.tie(NULL);    //cout.tie(NULL);    int T;    scanf("%d", &T);    while (T--) {        int n;        scanf("%d", &n);        ; i < n; ++i)            scanf("%d", &arr[i].first);        ; i < n; ++i)            scanf("%d", &arr[i].second);        sort(arr, arr + n);        , day = ;        priority_queue<int, vector<int>, greater<int> > pque;        ; i < n; ++i) {            pque.push(arr[i].second);            if (day < arr[i].first) {                ++day;                continue;            }            ans += pque.top();            pque.pop();        }        printf("%d\n", ans);    }    ;}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,918
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,444
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,255
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,069
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,701
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,741