【贪心】猜GPA最值

HDU 4968 Improving the GPA

题意:

已知各分值对应的绩点,给出n个科目的平均分ave,挑选n科的成绩求绩点可能的最大、最小值。

注:该学霸的成绩都≥60且≤100;

题解:

找最小值从最小绩点的上限开始挑,保证剩下的不大于100;

找最大值从最大绩点的下限开始挑,保证剩下的不小于60;

#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int N,n,ave;
    scanf("%d",&N);
    while(N--){
        scanf("%d%d",&ave,&n);
        int sum=ave*n,sum0=sum;
        double jd=0;
        for(int i=1;i<=n;i++){
            if(sum-69<=(n-i)*100){sum-=69;jd+=2;}
            else if(sum-74<=(n-i)*100){sum-=74;jd+=2.5;}
            else if(sum-79<=(n-i)*100){sum-=79;jd+=3;}
            else if(sum-84<=(n-i)*100){sum-=84;jd+=3.5;}
            else {sum-=100;jd+=4;}
        }
        printf("%.4f ",jd*1.0/n);
        sum=sum0;jd=0;
        for(int i=1;i<=n;i++){
            if(sum-85>=(n-i)*60){sum-=85;jd+=4;}
            else if(sum-80>=(n-i)*60){sum-=80;jd+=3.5;}
            else if(sum-75>=(n-i)*60){sum-=75;jd+=3;}
            else if(sum-70>=(n-i)*60){sum-=70;jd+=2.5;}
            else {sum-=60;jd+=2;}
        }
        printf("%.4f\n",jd*1.0/n);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值