问题标题: 酷町堂:5239求思路

0
0

0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

本题的主要思路是把输入的时间差求出,排序题目所用时间,从小开始选择,直到时间不够

首先求出时间差

之后对数组排序

for(int i=0;i<n;i++){
        if(a[i]<=total){
            ans++;
            total-=a[i];     //根据贪心策略,从耗时少的开始做,直到没时间或者没题目为止
        }
    }

求时间差

int fun(int year1,int year2,int month1,int month2,int day1,int day2,int hours1,int hours2,int minute1,int minute2){
    int countday1=0,countday2=0,sumday1=0,sumday2=0;
    countday1=fun1(year1,month1);      //求出因闰年而需要多加的天数
    countday2=fun1(year2,month2);
    for(int i=0;i<month1-1;i++){      //当前年份前几个月的天数
        sumday1+=b[i];
    }
    for(int i=0;i<month2-1;i++){
        sumday2+=b[i];
    }
    sumday1+=day1+countday1+365*year1;    //求出相对于0年1月1日的总天数,本来月日要减一因为相互抵消所以不计
    sumday2+=day2+countday2+365*year2;
    return (sumday2*24*60+hours2*60+minute2-sumday1*24*60-hours1*60-minute1);  //换算成分钟差返回
}

 

0
陈振轩
陈振轩
高级光能
高级光能

两个时间从0000年1月1日到现在求出时间一减再用贪心思想就彳亍了

我要回答