poj解题报告——2586

        这题我是用的贪心算法,其实不用也可以,枚举也能解决,因为情况不多。因为是每连续5个月必有亏损,而一年只有1-5,2-6,3-7,4-8……8-12共8种情况。现在设盈余为S,亏损为D,可列出以下几种情况。

        SSSSDSSSSDSS       4s<d

        SSSDDSSSDDSS      3s<2d

        SSDDDSSDDDSS     2s<3d

        SDDDDSDDDDSD    s<4d

        DDDDDDDDDDDD   s>=4d

        可判定:

        0 <= s <1/4d                 每连续5个月种至少1个月D

        1/4d <= s < 2/3d          每连续5个月种至少2个月D

        2/3d <= s < 3/2d          每连续5个月种至少3个月D

        3/2d <= s < 4d             每连续5个月种至少4个月D

        4d <= s                         全年各月必亏损

代码如下

#include<stdio.h>

void main()
{
    double s,d;
    int surplus;
    int flag;
    while(scanf("%lf%lf",&s,&d)!=EOF)
    {
        flag=0;
        surplus=0;
        if(s>=4*d)
            flag=1;
        else if((s>=1.5*d)&&(s<4*d))
        {
            surplus=3*s-9*d;
            if(surplus<0)
                flag=1;
        }
        else if((s>=0.666666*d)&&(s<1.5*d))
        {
            surplus=6*(s-d);
            if(surplus<0)
                flag=1;
        }
        else if((s>=0.25*d)&&(s<0.666666*d))
        {
            surplus=8*s-4*d;
            if(surplus<0)
                flag=1;
        }
        else if((s>=0)&&(s<0.25*d))
        {
            surplus=10*s-2*d;
            if(surplus<0)
                flag=1;
        }

        if(flag)
            printf("Deficit\n");
        else
            printf("%d\n",surplus);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值