题目叙述的很清晰,关键的一步就是先把输入数据按照开始时间进行排序。
问题就处在这里了,我用的快排,可是1000数据量的测试总也过不去,调试才发现,快排写错了,我只是把开始时间进行了排序,可是相对应的结束时间并没有跟着调整,结果出现了2万多秒的时间间隔!!
唉!本来想用结构体定义一下的,但是一想两个元素也不难就懒的写,结果杯具发生了,代码不清晰不说,还调试了好长时间,得不偿失啊
剩下的程序逻辑不是很难,把所有情况考虑清楚马上就可以AC了~~
分析的解法一:和我的思路是一样的,它的快排用的是标准库,所以自己要写一个比较函数。。。
分析的解法二:此方法把开始和结束时间全都进行排序,只不过加了一个标记便于区别。比如对于实例排序完成时的结果如下(CSDN居然没有插入表格功能?!我勒个去,无语。。。)
300 700 1000 1200 1500 2100
1 1 -1 -1 1 -1
于是可以看出有两种情况(k作为数组下标)
1.k=3或5时,恰好刚完成任务,工人数为0,可以求出工作时间
2.k=4时,工人数不为0,前一个任务刚结束,新的任务刚开始,所以可以求出空闲时间
此方法我没有想到,总是认为程序AC就万事大吉,也没有认真思考过别的方法。但肯定有大牛想得到的,努力学习啊!^_^