题库首页 › 信息素养大赛(C语言) › 题目 13686

战胜白蚁 【题目描述】 小明因为很长时间没有回家,发现他家被白蚁给入侵了,白蚁特别喜欢啃食木头, 因此他家的地板就遭殃了。小明要抢救被白蚁破坏的木地板,每个木地板由于白蚁 的数量不同,每个地板进行维修的时间也不同,同时要争取及时修理越好,否则超 过某个时间,这块地板就会被严重破坏掉。小明只能一块一块的清理白蚁,不能并 行操作,也就是不能同时修多块地板。 请编写一个程序,根据每个地板的修理时间和如果不修理就会被白蚁完全损毁的 时间,进行一个最合理的排序,使得可以抢救最多的木板。输入是木板的数目,以 及每个木板的维修时间和被破坏的时间,输出是能抢救的最多木板的数量。 【输入格式】 第一行是一个整数 N(N 小于 50000),接下来 N 行每行两个整数 T1,T2 描述一个 要修理的木板:修理这个木板需要 T1 秒,如果在 T2 秒之内还没有修理完成,这个木 板就报废了。 【输出格式】 输出一个整数 S,表示最多可以抢修 S 个木板。 【样例输入】 4 100 200 200 1300 1000 1250 2000 3200 【样例输出】 3 【注意事项】 请严格按要求输出,不要多余的打印语句,例如:“输入x=... ” 等多余内容。 本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函 数需要返回 0。注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或 操作系统的特殊函数。注意 : 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

正确答案:参考程序(Python):抢修木板。按T2排序,维护总时间与最大堆(已选T1)。遍历:入堆加T1,若总时间>T2弹出T1最大的。输出堆大小。样例→3。核心:贪心+最大堆。

试卷来源:2024全国青少年信息素养大赛C++算法创意实践挑战赛(小学组_复赛)真题

本卷相关题目

在线做题 同科目题库