题解 P1167 【刷题】

· · 题解

由于题目实现起来不算难,所以不提供标程。

P3:刷题

改编题-难度4

排序、模拟、贪心

首先计算出总时间,然后排序题目消耗时间,然后贪心。

大概就是这样。

等一下,怎么计算时间?

首先先读取时间。很多方法。由于时间的格式固定,所以可以一个字符一个字符读取,然后一个一个乘、加起来。

假设读入的时间是y年m月d日h是i分,计算得到已经过去了days个整天。

然后计算该时间点到年初的分钟数M=days*1440+h*60+i

开始时间到年初M1,结束是M2,开始年是y1,结束年是y2.

不要忘记2月29日

可以这么判断(伪代码):

function runnian(y){
if(y mod 400==0)return 1;
if(y mod 100==0)return 0;
if(y mod 4==0)return 1;
return 0;
}

应该有更简单的,不过这样好理解 好吧继续

如果y1=y2,就简单了,直接M2-M1

不在同一年中,就S+M2-M1,S是从y1年年初到y2年年初的秒数,很好计算。

你甚至可以一年一年枚举是否为闰年然后累加。不过小心爆int(longint)。

然后就没有然后了。