样例过不了+RE, 我就找不出这代码咋就RE了,奇特!!
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。
kkksc03 改编
#include <bits/stdc++.h>
using namespace std;
const int RW = 6, CL = 60;
int main(){
int n; cin >> n;
vector<int> zom[RW + 1];
for(int i = 1, p, t; i <= n; i ++)
cin >> p >> t, zom[p].push_back(t + CL);
int ans = 0;
for(int i = 1; i <= RW; i ++){
sort(zom[i].begin() + 1, zom[i].end());
for(int j = 1; j <= zom[i].size();){
ans ++;
int tp = j;
while(zom[i][tp] < zom[i][j] + CL)
tp ++;
j = tp;
}
}
printf("%d", ans);
return 0;
}