2023年码蹄杯三赛 激光扫描游戏 题型:模拟

63 阅读1分钟

码题集OJ-激光扫描游戏 (matiji.net)

按照题意模拟即可:

image.png 第一行永远都只会扫描500个格子。因为就算第一行出现了地图,那么列的范围也是在下一行才会变。

所以第一行扫描的格子为500(499+1,右边界+1)。

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int ans;
int n;
vector<int>v[N];
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int x,y;cin>>x>>y;
		v[x].push_back(y); 
	}
	
	int r=499;
	
	for(int i=0;i<1000;i++)  //从第一行枚举到最后一行
	{
	   int cur=r;
	   ans+=cur+1;	
	   
	   for(auto j:v[i])
	   {
         if(cur>=j) r=r+(i-j);	   	
	   }
	   
	   if(r<0)r=0;
	   if(r>999)r=999;
	} 
	
	cout<<ans;
	return 0;
}

image.png