题解 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)。
然后就没有然后了。