P1413 坚果保龄球
题目:
PVZ这款游戏中,有一种坚果保龄球。zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们。
我们可以认为地图是一个行数为6,列数为60的棋盘。zombie出现的那一秒站在这一行的第60列,之后每秒向左移动一步。玩家可以随时在屏幕最某一行第一列摆放坚果,这一行的zombie瞬间全被滚过去的坚果碾死。如果zombie走到第1列没有被消灭,如果再向左走,则你的大脑就会被zombie吃掉。
现在有n只zombie!告诉你每只zombie出现的时间以及在出现的行数(可能会同时出现同一位置的僵尸),请问至少需要多少坚果才能消灭所有的zombie。
解析:
PVZ这款经典游戏
估计很多人都玩过
策略游戏
难度不高
深得男女老少喜爱
这道题
也是通过PVZ的其中一种小游戏来改编的
这道题难度不大
但是有几个点
重点一:
输入的时候
保存不难
不过因为是坐标
所以要放在二维数组中
排序就比较难了
不过
sort可以给二维数组排序
但是
只能横着排序
不能竖着排序
这次正好是横着
如果不是的话
斜过来就好了
重点二:
这道题
每一个僵尸
不是跟
上一个比
而是更
最前面的比
所以一定要注意
重点三:
这道题
每两个僵尸之间的距离
最多是59
不可能是60
如果是60
那一个在1
一个在61
一个坚果是解决不了的
重点讲完
附代码:
#include<bits/stdc++.h>
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int a[7][10001],b[7],x,y,maxn,sum,n;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>y;
b[x]++;
a[x][b[x]]=y;
}
for(int i=1;i<=6;i++) sort(a[i]+1,a[i]+1+b[i]);
for(int i=1;i<=6;i++)
{
maxn=a[i][1];
if(maxn>0) sum++;
for(int j=1;j<=b[i];j++)
{
if((maxn+59)<a[i][j])
{
maxn=a[i][j];
sum++;
}
}
}
cout<<sum<<endl;
return 0;
}