求调
  • 板块灌水区
  • 楼主_FarmerJohn_
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/7/22 20:35
  • 上次更新2024/7/22 21:34:37
查看原帖
求调
628365
_FarmerJohn_楼主2024/7/22 20:35

样例过不了+RE, 我就找不出这代码咋就RE了,奇特!!

题目

坚果保龄球

题目描述

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

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

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

输入格式

第一行一个正整数 nn,表示 zombie 数量。

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

输出格式

一个正整数,最少需要的坚果数。

样例 #1

样例输入 #1

10
1 1
1 61
2 1
2 60
3 1
3 2
3 3
3 4
4 1
4 99999

样例输出 #1

6

提示

数据范围及约定

对于全部数据,n≤2000n \le 2000,t≤100000t \le 100000,1≤P≤61 \le P \le 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;
}
2024/7/22 20:35
加载中...