P1413 坚果保龄球

题目描述
PVZ这款游戏中,有一种坚果保龄球。zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们。

我们可以认为地图是一个行数为6,列数为60的棋盘。zombie出现的那一秒站在这一行的第60列,之后每秒向左移动一步。玩家可以随时在屏幕最某一行第一列摆放坚果,这一行的zombie瞬间全被滚过去的坚果碾死。如果zombie走到第1列没有被消灭,如果再向左走,则你的大脑就会被zombie吃掉。

现在有n只zombie!告诉你每只zombie出现的时间以及在出现的行数(可能会同时出现同一位置的僵尸),请问至少需要多少坚果才能消灭所有的zombie。

输入格式
第一行一个正整数n,表示zombie数量。

之后n行中,每行两个正整数P和t,分别表示zombie所在行和zombie出现的时间。

输出格式
一个正整数,最少需要的坚果数。

输入输出样例
输入
10
1 1
1 61
2 1
2 60
3 1
3 2
3 3
3 4
4 1
4 99999
输出
6

【数据规模】
n<=2000,t<=100000,1<=P<=6

首先我们需要整理一下数据,我们可以将同一行上的zombie放在一个地方,这里我们可以创立一个二维数组a[i][j]a[i][j]a[i][j]其中i表示所在的行,j表示每一个僵尸到达的时间,这样我们就可以一个一个的分辨出每一行僵尸到达的时间,

int a[7][2010];  //最坏的情况所有zombie出现在同一行
int b[7];   //存储每一行zombie的数量

并且我们需要尽可能少的使用坚果,所以当一个zombie到了每一行的第一列时我们才使用坚果
所以在每一行我们需要对zombie到达的时间进行排序,并判断当zombie到达第一列时,有几个僵尸在同一行

for(j = 0; j < b[i]; ) {int time = a[i][j];sum++; //使用坚果的数量while(time+60 > a[i][j] && j < b[i]) {  //判断在接下来的60秒这一行内是否还有zombie出现,有的话就一起压过去j++;}}

比如在样例中我们可以将每一行进行排序之后的情况
第一行:1,61
第二行:1,60
第三行:1,2,3,4
第四行:1,99999
在第一行我们可以知道当第一个zombie到达第一列时并没有zombie再出现,所以第一个坚果压了一个zombie,第二个僵尸在到达第一列时也没有zombie出现sum = 2。
第二行,当第一个zombie到达第一列时,有一个zombie出现了,这样一个坚果双杀了,sum = 3。
第三行,当第一个zombie到达第一列时,有三个zombie出现了,sum = 4。
第四行用了两个坚果,sum = 6。
代码如下:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[7][2010]; //最坏的情况所有zombie出现在同一行
int b[7];   //存储每一行zombie的数量
int main() {int p, t, i, j, sum = 0;cin >> n;for(i = 0; i < n; i++) {cin >> p >> t;a[p][b[p]] = t;b[p]++;}for(i = 1; i <= 6; i++) {sort(a[i], a[i]+b[i]);}for(i = 1; i <= 6; i++) {for(j = 0; j < b[i]; ) {int time = a[i][j];sum++;while(time+60 > a[i][j] && j < b[i]) { //判断在接下来的60秒这一行内是否还有zombie出现,有的话就一起压过去j++;}}}cout << sum <<endl;
}

P1413 坚果保龄球洛谷c++题解相关推荐

  1. 洛谷 P1413 坚果保龄球

    P1413 坚果保龄球 题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zo ...

  2. |洛谷|贪心|P1413 坚果保龄球

    https://www.luogu.org/problem/show?pid=1413 把僵尸按照t为关键字从小到大排序,t相同时p为关键字 然后用a数组来存储每一道最早能拦截到的一个僵尸的编号 如果 ...

  3. P1413 坚果保龄球——题解2020.10.10

    P1413 坚果保龄球 思路分析 由题可知棋盘大小为 6 行 60 列,游戏开始后每秒任意行的最后一列都有可能出现若干僵尸,玩家每秒可以在任意行的第一列放置若干坚果,坚果可瞬间杀死所在行的所有僵尸,僵 ...

  4. P1413 坚果保龄球

    P1413 坚果保龄球 题目: PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zom ...

  5. 洛谷p1598题解记录

    洛谷p1598题解记录 对这道题来说,输入几行数据其实无所谓,判定时是按照是否输入EOF来决定输入是否结束的. 代码 #include <stdio.h>char numberCount[ ...

  6. 洛谷——P1413 坚果保龄球

    https://www.luogu.org/problem/show?pid=1413#sub 题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动 ...

  7. [洛谷]P1413 坚果保龄球 (#贪心 -1.18)

    题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zombie出现的那一秒站在 ...

  8. 洛谷CF982B 题解

    谢谢管理员大大给过 优先队列速通大法 hello!我又来水体了,不过嘛,相对来说这道题普及-不算水. 那我们就来研究研究吧. 先看题目 题目传送门 F1:0分暴力 一开始我也是闲的没事想要弄一下暴力做 ...

  9. P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序

    传送门: P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3387 问题分析 首先为了节省 ...

最新文章

  1. SSM框架——Spring+SpringMVC+Mybatis的搭建教程
  2. SpringBoot注解大全 转
  3. 第九课.朴素贝叶斯分类器
  4. 为什么说 Serverless 是云的未来?
  5. csgo陀螺仪是什么意思_CSGO:起源2将在五月中旬推出?B5无意间透露出这个消息...
  6. 【收藏】cgroup的简单使用
  7. SQLSever 存储过程创建
  8. 个人房贷为啥又贵又难贷 一个房贷银行有3套逻辑
  9. java treemap lastkey_Java TreeMap lastKey()用法及代码示例
  10. ORA-00911错误及解决方法(另附所有ora错误原因及解决方法 网址)
  11. 小宝机器人的储存容量_扫地机器人和吸尘器哪个更实用?
  12. 【work】输出日期为那一年的第几天
  13. 44. 将样式表放在顶部(5)
  14. 用Java实现向Cassandra数据库中插入和查询数据
  15. 15、三数之和(python)
  16. 母亲节第二期|有哪些母亲节祝福贺卡的素材灵感来源?
  17. C语言实现平衡二叉树
  18. 为什么手机网速太慢_为什么苹果手机的网速变慢了_苹果手机上网速度慢的解决方法-系统城...
  19. 使用微信号开通检测软件的成功案例(一)
  20. 校招秋招面经整理及复习规划

热门文章

  1. C#中使用DirectX实现视频播放
  2. 神奇电子计算机 教学设计,大连理工版三年级下册信息技术 7. 神奇的艺术字 教案...
  3. petalinux挂载88e1512、88e1111及base-t、base-x转换
  4. 微软Windows11,官方更新助手(下载地址)
  5. 牛客小白月赛7 谁是神箭手
  6. 大数据比手势锁靠谱?支付宝回应质疑
  7. 公共关系计算机操作题,Access上机操作题库.doc
  8. 科普小时代---笔记本连接无线受限
  9. 学python之leetcode1863题 python3转python2
  10. linux 部署 程序,Linux 部署配置WEB APP