文章

99

粉丝

120

获赞

8

访问

96.9k

头像
P2895 [USACO08FEB]Meteor Shower S
备考心情
发布于2024年8月24日 22:46
阅读数 953

#include<bits/stdc++.h> //美丽的万能头文件
using namespace std;
int n, ma[305][305], v[305][305], sx, sy, st, ans[305][305];//分别为陨石数量,陨石砸落地图,记录是否走过地图,陨石x,y坐标及砸落时间,每个点的最少时间图。
int dx[5] = { 0,0,0,1,-1 };
int dy[5] = { 0,1,-1,0,0 };//方便移动和处理陨石砸落
int ch(int a) {
	if (a == -1) return 99999;
	else return a;
}//判断路过该点时是否陨石已经砸落,如果是没有陨石,相当于n年后砸落
int main() {
	scanf("%d", &n);
	for (int i = 0; i < 305; i++) {
		for (int j = 0; j < 305; j++) {
			ma[i][j] = -1;
		}
	}//陨石初始化为-1
	for (int i = 1; i <= n; i++) {
		scanf("%d%d%d", &sx, &sy, &st);//输入陨石
		for (int j = 0; j < 5; j++) {//上下左右中标记陨石
			if (sx + dx[j] >= 0 && sy + dy[j] >= 0 && (ma[sx + dx[j]][sy + dy[j]] == -1 || ma[sx + dx[j]][sy + dy[j]] > st))//如果该标记x,y坐标大于0且该点没有被陨石砸落或已标记时间没有该时间早,标记陨石
				ma[sx + dx[j]][sy + dy[j]] = st;
		}
	}
	queue<int> q[2];//构造队列,存储将处理点x,y坐标
	v[0][0] = 1;//初始点设为已走过
	q[0].push(0); q[1].push(0);//初始点放入队列
	while (!q[0].empty()) {/...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发