zoukankan      html  css  js  c++  java
  • hdu 1789 Doing Homework again

    题意:要完成一批作业,假定每一科作业花的时间都为一天,若该科不能在相应的期限能完成,则扣除相应的分数,问完成这些作业最少扣多少分

    分析:贪心题

    贪心策略:先将作业按扣分值从大到小排序,若大小相等,则按期限从小到大排序。之后,用一个数组标记该天是否已用于完成作业。

    依次枚举每一科作业,从该科的期限往左移,若存在一天为用过的,则标记,否则,扣分

    View Code
    #include<iostream>
    #include<algorithm>
    #define MAXN 1000+10
    using namespace std;
    int n;
    bool vis[MAXN];
    struct work
    {
    int d,w;
    }p[MAXN];
    bool cmp(work a,work b)
    {
    if(a.w!=b.w)
    return a.w>b.w;
    return a.d<b.d;
    }
    int main()
    {
    int T;
    scanf("%d",&T);
    while(T--)
    {
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    scanf("%d",&p[i].d);
    for(int i=1;i<=n;i++)
    scanf("%d",&p[i].w);
    sort(p+1,p+n+1,cmp);
    memset(vis,false,sizeof(vis));
    int ans=0;
    for(int i=1;i<=n;i++)
    {
    int flag=1;
    for(int j=p[i].d;j>=1;j--)
    {
    if(!vis[j])
    {
    vis[j]=true;
    flag=0;
    break;
    }
    }
    if(flag) ans+=p[i].w;
    }
    printf("%d\n",ans);
    }
    return 0;
    }
  • 相关阅读:
    java网络爬虫爬虫小栗子
    浮点数精确表示
    使用yum安装CDH Hadoop集群
    判断奇数,java陷阱
    Long型整数,缄默溢出
    java基础知识点
    java常用指令
    Codeforces Round #275 (Div. 2) D
    区间dp的感悟
    Codeforces Round #386 (Div. 2) C D E G
  • 原文地址:https://www.cnblogs.com/nanke/p/2364121.html
Copyright © 2011-2022 走看看