CF 4B. Before an Exam

CF 4B. Before an Exam   点击打开链接

题意:快要考试了 你还有 n 天的时间一共要复习 m个小时,每天都有最小和最大复习时间。求,是否可能复习完。如果能,输出你的复习计划。

思路:由于每天有复习时间的限制,你每天的复习时间就必须在限制之内,判断能否复习完,只需将最小复习时间相加与总复习时间相加比较即可。如果可以复习完,就用总复习时间减去 最小复习时间之和  得x,然后每天先取最小复习时间  MInTime,如果x有剩余,则取   MInTime+t    MinTime+t<MaxTime  然后x-=t。x==0之后,直接取MinTime即可。

#include <iostream>
using namespace std;
int MinTime[500],MaxTime[500];
int main()
{
    int SumTime,Day,Max=0,Min=0;
    cin>>Day>>SumTime;
    for(int i=0;i<Day;i++){
        cin>>MinTime[i]>>MaxTime[i];
        Max+=MaxTime[i];
        Min+=MinTime[i];
    }
    if(Max<SumTime)
        cout<<"NO";
    else if(Min>SumTime)
        cout<<"NO";
    else{
        cout<<"YES"<<endl;
        int x=SumTime-Min;
        for(int i=0;i<Day;i++){
            if(MinTime[i]+x>=MaxTime[i]){
                cout<<MaxTime[i];
                x=MinTime[i]+x-MaxTime[i];
            }
            else{
                cout<<MinTime[i]+x;
                x=0;
            }
            if(i<Day-1)
                cout<<" ";
        }
    }
    cout<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值