P1413 坚果保龄球

https://www.luogu.com.cn/problem/P1413
涉及知识点:贪心

橙色题

 
思路:首先开一个maxn数组储存每一行的最大时间值,然后开一个二维数组储存每一行每一个僵尸出现的时间,通过两层循环枚举,如果在一个六十秒之内出现过僵尸,则可以杀死这个六十秒内所有僵尸,也就是说只需增加一个保龄球,这一个六十秒之内所有僵尸都不需要在花额外的保龄球了
 
代码:
复制代码
#include<bits/stdc++.h> using namespace std; int maxn[10],zom[10][500000]; int main() { int n,t,p,tot = 0; cin >> n; for(int i = 1;i <= n;i ++) { cin >> p >> t; maxn[p] = max(maxn[p],t);//更新最大值 zom[p][t] ++;//p行时间为t时出现僵尸 } for(int i = 1;i <= 6;i ++) { for(int j = 1;j <= maxn[i];) { if(zom[i][j]) { tot ++;//如果一段60s内有僵尸则需要一个保龄球 j += 60;//然后就可以跳过这个六十秒因为一个保龄球可以杀死这个六十秒内的所有僵尸 } else j ++; } } cout << tot;//输出结果 }
复制代码

 


__EOF__

本文作者灰の魔女伊蕾娜
本文链接https://www.cnblogs.com/2elaina/p/16457237.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -イレイナ  阅读(170)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示