长兴县建设管理网站免费注册企业网站
web/
2025/9/30 15:55:57/
文章来源:
长兴县建设管理网站,免费注册企业网站,网络营销有哪些模式,网站建设兼职平台原题地址
解法一
排序贪心即可。思想为先计算出每一个怪兽到达城市的时间#xff0c;然后排序#xff0c;有小到大进行消灭#xff0c;此时的下标可视作时间。当怪兽到达城市的时间超过或等于当前时间时#xff0c;即已经到达了城市#xff0c;游戏失败#xff0c;下标…原题地址
解法一
排序贪心即可。思想为先计算出每一个怪兽到达城市的时间然后排序有小到大进行消灭此时的下标可视作时间。当怪兽到达城市的时间超过或等于当前时间时即已经到达了城市游戏失败下标即为消灭了多少个怪兽。O(nlogn) 时间复杂度主要在排序上。 int eliminateMaximum(vectorint dist, vectorint speed) {int length dist.size();vectorint times(length);for (int i 0; i length; i) {times[i] (dist[i] - 1) / speed[i] 1;}sort(times.begin(), times.end());for (int i 0; i length; i) {if (times[i] i)return i;}return length;}解法二
排序还是过于粗暴不优雅。进一步思考优化首先如果怪物到达的时间比怪物总数大可以忽略因为会尽可能先消灭到达时间快的怪物而在怪物总数的时间时已经可以把所有怪物消灭了。相较于排序这个解法不排序将怪物到达的时间计数然后从最小的开始进行怪物消灭。这时的下标不代表时间了需要额外使用变量记录当前时间。 int eliminateMaximum(vectorint dist, vectorint speed) {int length dist.size();vectorint times(length,0);for (int i 0; i length; i) {int time (dist[i] - 1) / speed[i] 1;if (time length) continue;times[time];}int time 0;for (int i 0; i length; i) {if(!times[i]) continue;if(timetimes[i]i) return i;time times[i];}return length;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84533.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!