poj 3669

news/2024/10/30 9:33:05/

bfs的题
因为每次都模拟流行砸下来,tle一次,(应该标记每个点被砸的时间)
因为没有标记走过的点不能再走,tle了一次,(之前认为走过的点应该可以再走,其实仔细想的话,走过的点一定是不能再走的)
因为没有提前判断必死的情况,tle一次,
因为题上说0 ≤ Xi ≤ 300; 0 ≤ Yi ≤ 300,所以人能走的点的范围一个时(0 ≤ Xi ≤ 301; 0 ≤ Yi ≤ 301),人能走的范围最少应该比彗星的范围多1,不然人必死。而我实际代码写成了

if (temp.x < 0 || temp.x > 300 || temp.y < 0 || temp.y > 300)continue;

wa了一次

最终代码

#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>
#include <stdlib.h>
#include <stdio.h>#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define l(x) x<<1
#define r(x) x<<1|1
#define ms(a,b) memset(a,b,sizeof(a))using namespace std;struct node {int x, y, times;node(int xx,int yy) : x(xx), y(yy), times(0) {}node() : x(0), y(0), times(0) {}
};int mmap[333][333],vis[333][333];
int m,a,b,c;
int dir[4][2] = { 0,1,0,-1,1,0,-1,0};void setm(int x, int y,int now) {mmap[x][y] = min(mmap[x][y], now);if (x > 0) mmap[x - 1][y] = min(mmap[x - 1][y], now);if (y > 0)  mmap[x][y - 1] = min(mmap[x][y - 1], now);if (x < 301)  mmap[x + 1][y] = min(mmap[x + 1][y], now);if (y < 301)  mmap[x][y + 1] = min(mmap[x][y + 1], now);
}int bfs() {queue<node> q;node now;node temp;q.push(now);while (!q.empty()) {now = q.front();q.pop();temp = now;temp.times++;for (int j = 0; j < 4; j++) {temp.x = now.x + dir[j][0];temp.y = now.y + dir[j][1];if (temp.x < 0 || temp.x > 301 || temp.y < 0 || temp.y > 301)continue;if (vis[temp.x][temp.y] == 1)continue;vis[temp.x][temp.y] = 1;if (mmap[temp.x][temp.y] == INF)return temp.times;if (temp.times < mmap[temp.x][temp.y])q.push(temp);}}return -1;
}int main() {ms(mmap, INF);ms(vis, 0);scanf("%d", &m);for (int i = 0; i < m; i++) {scanf("%d%d%d", &a,&b,&c);setm(a, b,c);}if (mmap[0][0] == 0) {printf("-1\n");}else {printf("%d\n", bfs());}return 0;
}

http://www.ppmy.cn/news/131385.html

相关文章

ORACLE ASM常用命令整理

ASM 命令整理 一. 查看ASM空间使用情况 1. lsdg: 查看磁盘组的信息&#xff0c;和磁盘空间大小 ASMCMD> lsdg State Type Rebal Block AU Total_MB Free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 4096 1048576 …

POJ-3669广度优先搜索

这是一道典型的广度优先搜索BFS题目。 首先声明一下&#xff0c;我在这里借鉴了别人的想法&#xff1a;这是原文答案&#xff0c;请点击 题目大意&#xff1a; 流星雨即将攻击地球&#xff0c;当然数目是有限的&#xff0c;共n个&#xff0c;攻击到某个点时将会使该点及其上…

POJ 3669(优先队列BFS)(对地图进行优化)

题目新颖&#xff0c;解法也是比较难想的。 题目&#xff1a; Bessie听说有场史无前例的流星雨即将来临&#xff1b;有谶言&#xff1a;陨星将落&#xff0c;徒留灰烬。为保生机&#xff0c;她誓将找寻安全之所&#xff08;永避星坠之地&#xff09;。目前她正在平面坐标系的…

“3.15”十五个行业大调查:谁在侵害消费者权益?

疫情之后消费复苏&#xff0c;“烟火人间“回归日常。 但是&#xff0c;部分行业的繁华羽翼之下却暗藏斑点&#xff0c;侵害消费者权益的各种乱象丛生&#xff1a; 新餐饮经营异常&#xff0c;食材口感与消费者期望严重不符&#xff1b;厨房小家电价格飘忽不定&#xff0c;参数…

苹果二手报价及图片大全

苹果二手价格一直很多人关注&#xff0c;下面给大家看看最新的二手苹果手机价格。&#xff08;数据来源&#xff1a;换换二手交易平台&#xff09;

最新苹果二手报价单(2022.2.15)

2022.2.15换换回收iPhone苹果二手机报价单(按照内存、靓机、小花、大花、花机四个等级进行报价)如下所示

手机app系统软件开发报价单及方案:费用明细

手机app系统软件开发报价单及方案&#xff1a;费用明细 一般而言&#xff0c;功能报价单是外包合同的附件&#xff0c;是开发范围的约束文件&#xff0c;即使在设计已经基本确定的情况下&#xff0c;有了设计稿或demo&#xff0c;依然应该有一份功能清单。 某种程度上&#xf…

27英寸苹果新款iMac上架:升级十代酷睿+Radeon 5000系显卡

苹果于8月4日晚上架27英寸新款iMac&#xff0c;这次更新在外观设计上并没有做变动&#xff0c;主要是硬件配置方面的升级&#xff0c;其中 27 英寸版本升级到了英特尔第十代酷睿&#xff08;Comet Lake&#xff09;处理器&#xff0c;摄像头也升级到了 1080P&#xff0c;21.5 英…