poj1024 bfs

POJ2688状态压缩(可以+DFS剪枝) 题意:       给你一个n*m的格子,然后给你一个起点,让你遍历所有的垃圾,就是终点不唯一,问你最小路径是多少? 思路:       水题,方法比较多,最省事的就是直接就一个BFS状态压缩暴搜就行了,时间复杂度20*20*1024的,完全可以接受,但是被坑了,一开始怎么交都TLE,后来又写了一个BFS+DFS优化,就是跑之前先遍历一遍图,看看是不是所有的垃圾点都能遍历到,这样还是 阅读详情

这题写的很苦手啊,详解见poj discuss.

#include <iostream>
#include <string>
#include <queue>
using namespace std;
struct point{
       int x,y;
};
int g[101][101][5],cas,n,m,k,x1[1010],x2[1010],y1[1010],y2[1010];
int a[101][101],b[101][101],x,y;
bool ans,v[101][101];
string s;
void bfs1(int x,int y) {
     int c,d,cc,dd,key;
     point tmp;
     queue<point> q;
     while (!q.empty()) q.pop();
     a[x][y] = 0;
     tmp.x = x;
     tmp.y = y;
     q.push(tmp);
     while (!q.empty()) {
           cc = q.front().x;
           dd = q.front().y;
           key = a[cc][dd];
           q.pop();
           for (int k=0;k<4;k++) {
               c = cc;
               d = dd;
               if (g[c][d][k]) {
                  if (k==0) c++;
                  if (k==1) d++;
                  if (k==2) c--;
                  if (k==3) d--;
                  if (a[c][d]==-1) {
                                  a[c][d] = key+1;
                                  tmp.x = c;
                                  tmp.y = d;
                                  q.push(tmp);
                  }
               }
           }
     }
}
void bfs2(int x,int y) {
     int c,d,cc,dd,key;
     point tmp;
     queue<point> q;
     while (!q.empty()) q.pop();
     b[x][y] = 0;
     tmp.x = x;
     tmp.y = y;
     q.push(tmp);
     while (!q.empty()) {
           cc = q.front().x;
           dd = q.front().y;
           key = b[cc][dd];
           q.pop();
           for (int k=0;k<4;k++) {
               c = cc;
               d = dd;
               if (g[c][d][k]) {
                  if (k==0) c++;
                  if (k==1) d++;
                  if (k==2) c--;
                  if (k==3) d--;
                  if (b[c][d]==-1) {
                                  b[c][d] = key+1;
                                  tmp.x = c;
                                  tmp.y = d;
                                  q.push(tmp);
                  }
               }
           }
     }
}                                          
int main() {
    scanf("%d",&cas);
    while (cas--) {
          scanf("%d%d",&n,&m);
          cin >> s;
          memset(g,1,sizeof(g));
          for (int i=0;i<n;i++)
              g[i][0][3] = g[i][m-1][1] = 0;
          for (int i=0;i<m;i++)
              g[0][i][2] = g[n-1][i][0] = 0;
          scanf("%d",&k);
          for (int i=1;i<=k;i++) {
              scanf("%d%d%d%d",&x1[i],&y1[i],&x2[i],&y2[i]);
              if (x1[i]==x2[i]) {
                 if (y1[i]<y2[i]) {
                                  g[x1[i]][y1[i]][1] = 0;
                                  g[x2[i]][y2[i]][3] = 0;
                 }
                 else {
                                  g[x1[i]][y1[i]][3] = 0;
                                  g[x2[i]][y2[i]][1] = 0;
                 }
              }
              else {
                 if (x1[i]<x2[i]) {
                                  g[x1[i]][y1[i]][0] = 0;
                                  g[x2[i]][y2[i]][2] = 0;
                 }
                 else {
                                  g[x1[i]][y1[i]][2] = 0;
                                  g[x2[i]][y2[i]][0] = 0;
                 }
              }
          }
          memset(v,0,sizeof(v));
          x = 0;
          y = 0;
          v[x][y] = 1;
          for (int i=0;i<s.length();i++) {
              if (s[i]=='R') x++;
              if (s[i]=='L') x--;
              if (s[i]=='U') y++;
              if (s[i]=='D') y--;
              v[x][y] = 1;
          }
          memset(a,-1,sizeof(a));
          memset(b,-1,sizeof(b));
          bfs1(0,0);
          bfs2(x,y);
          ans = true;
          for (int i=0;i<n;i++)
              for (int j=0;j<m;j++)
                  if (v[i][j]==0 && a[i][j]+b[i][j]==s.length())
                     ans = false;
          if (ans) {
                   for (int i=1;i<=k;i++) 
                       if (a[x1[i]][y1[i]]+b[x2[i]][y2[i]]>s.length() &&
                          a[x2[i]][y2[i]]+b[x1[i]][y1[i]]>s.length()) {
                          ans = false;
                          break;
                       }
          }
          for (int j=m-1;j>=0;j--)    //全围起来!! 
              for (int i=0;i<n;i++)
                  if (a[i][j]==-1) {
                                   ans = false;
                                   break;
                  }
          
          if (ans) printf("CORRECT\n");
          else printf("INCORRECT\n");
    }
    return 0;
}


多模态大模型学习路线:从CLIP到LLaVA的完整实战指南 多模态大模型旨在让一个模型同时理解图像、文本等多种信息形式,其核心挑战在于数据异构与模态对齐。以CLIP为代表的对比学习范式,通过拉近匹配图文对、推远不匹配对的训练目标,将视觉与文本映射到统一向量空间,奠定了多模态模型的基础。随后,BLIP-2的Q-Former桥接架构与LLaVA的简洁投影拼接范式,推动了从对齐到生成的演进。在实际工程中,基于开源模型如Qwen-VL进行LoRA微调和本地部署已日趋成熟,可应用于图文知识库、票据识别、UI理解等垂直场景。本文系统梳理了从基础理论到代码复现、微调部署的完整学习 阅读详情

相关推荐

Dify+MCP 双剑合璧:告别知识库模糊统计,让AI精准查询数据库数据!

本文详细介绍了如何通过Dify和MCP的结合,解决知识库在数据库查询中的模糊统计问题。通过MCP中间件将自然语言实时转换为SQL语句,实现精准数据查询,并支持SSE协议持续更新数据。文章包含MySQL环境搭建、MCP服务端部署、Dify工作流配置等实战步骤,帮助用户高效构建智能数据库查询系统。

weixin_33737774的博客 368

POJ 1024--Tester Program

poj 1024

Hering_Linux的专栏 537

Ubuntu更新后VirtualBox报错rc=-1908?手把手教你修复Kernel driver not installed

本文详细解析了Ubuntu更新后VirtualBox报错rc=-1908的原因,并提供了完整的修复方案。通过重新安装VirtualBox、处理DKMS内核模块以及解决Secure Boot问题,帮助用户快速恢复虚拟机功能。特别针对Kernel driver not installed错误,给出了从诊断到修复的详细步骤。

weixin_42519781的博客 339

poj-1024(唯一最短路径)(转)

题意: /*** (1)求各点到源点的最小步数(DFS)* (2)求各点到终点的最小步数(DFS)* (3)如果点不是给定路径上的点,那么:该点到源点的最小步数+该点到终点的最小步数<=给定路径的步数,否则给定路径不是唯一最短的* (4)如果两相邻点a、b之间存在墙,那么:a到源点的最小步数+1+b到终点的最小步数<=给定路径的步数*...

dmt26374的博客 336

Unity3D实战:用EasyAR4.0稀疏空间地图打造AR导航应用(附完整代码)

本文详细介绍了如何使用Unity3D和EasyAR4.0的SparseSpatialMap功能构建AR导航应用。通过稀疏空间地图技术,开发者可以创建室内导航系统,解决传统GPS在室内环境中的局限性。文章包含完整代码示例,涵盖环境配置、地图构建、导航实现及性能优化等关键步骤,助力开发者快速掌握AR导航开发技巧。

t8u9v0的博客 1197

Unity中基于SkinMeshRenderer的骨骼动画换装系统优化实践

本文深入探讨了Unity中基于SkinnedMeshRenderer的骨骼动画换装系统优化实践。针对换装卡顿、显示错误等常见问题,文章剖析了SkinnedMeshRenderer的核心数据原理,对比了“数据替换”与“实体替换”两种主流方案的性能差异,并详细阐述了通过骨骼字典缓存、对象池管理、材质合并与Draw Call优化等实战技巧,构建高性能、高稳定性的生产级换装系统。

weixin_29008055的博客 314

POJ-1024取石子游戏(威佐夫博弈)——求解与数学证明

今天在网上看到这道算法题,很有意思,看了网上的解题思路,很受启发,但感觉没有看到严谨的证明,就结合自己的思路,写一下我的证明过程。题目是这样的:Problem Description有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆...

qq_37664133的博客 819

【原创教程】西门子1500与施耐德伺服的通讯以及调试

该函数块主要描述伺服的手动,左边的引脚Forward是指伺服手动正转,Backward是指伺服手动反转,Fast是指手动的某个方向为快速运行,TipPos手册上描述为固定值,WaitTIme是指伺服手动的相应时间,VeloSlow指伺服手动正常慢速运动的速度,VeloFast指伺服手动快速运动的速度,Acceleration是指伺服手动的加速度,Decelertion是指伺服手动的减速度。该函数块用于伺服停止,左边的引脚Execute为伺服停止执行,Deceleration含义为减速,Axis为轴。

Qinmingyue13的博客 1374

POJ 1024 Tester Program(DFS:求单源最短路径)

POJ 1024 Tester Program(DFS求单源最短路径) http://poj.org/problem?id=1024 题意:现在有一个迷宫,我们给出一条最短路径,然后继续给出这个迷宫的墙的构造方式,要你检查最短路径是否唯一 且 这些墙是不是有多余? 分析:仔细体会如何用DFS一次求出单源最短距离.        首先我们根据上面给的最短路径和墙的信息构图(具体看代码,仔细

code 2015

【WorkBuddy从入门到精通实战教程】实战案例 第 18 章 把投资分析(炒股)变成你的日常

投资本身就是一件高度信息密集、强结构化、又极度依赖判断的事:读不完的财报、理不清的行业、吵不停的多空。而整理碎片信息、拆解复杂材料、把思考过程摆到台面上,恰好是 AI 擅长的。 在一次完整的股票研究里,AI 到底能替你做掉哪些低质量的重复劳动,把精力还给判断本身。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 466

1.4 KFD 设备文件的获取与驱动握手协议

本文分析了OpenClose模块中libhsakmt与KFD内核驱动建立通信的过程。首先通过hsaKmtOpenKFD()函数打开/dev/kfd设备文件,建立用户态与内核态的通信通道。随后通过AMDKFD_IOC_GET_VERSION ioctl命令完成版本握手,确认双方的接口兼容性。KFD驱动采用Major.Minor二级版本号体系,当前主要版本为1,从1.1演进到1.19不断添加新功能。整个过程构成了用户态与内核态之间的"建连协议",是所有后续GPU操作的基础前提。

图形/计算GPU的驱动与虚拟化技术分享园地 599

poj1024

题目描述:给定走出一个迷宫的最短路径,再给出一个由这个最短路径算出来的解(一个墙的结合),现在要有设计程序判断该解是否正确。 正确的标准:最短路径为给出的最短路径且唯一,如果给出的解(墙的集合)组成的迷宫的最短路径比给定的最短路径长或短都不行,一定要一样长且只有给定的那一条路是最短路。 输入格式:多组数据,第一行为一个整数t,表示数据的组数 每组数据包括一个原始问题输入和一个原始问题输出。

SparkRat的家 1587

滑模控制算法(SMC)讲解-案例(附C代码)

该文章介绍了滑模控制算法的原理实现步骤,特点及关键问题,最后以车辆控制案例来讲解滑模控制的整个步骤实现

heda3的博客 4111

poj 1024+BFS+Tester Program

题目大意:给一个rows*column的迷宫,并给出一条路径,和一些迷宫路径之间的墙,让判断这些墙是否能使的从起点到终点的唯一最短路径为给定的路径,并且这些墙中没有多余的墙,其中起点为(0,0),终点不定。 题目解法:暴力+BFS,然后竟然也过了- -| 从起点BFS搜索到终点的最短路径,如果最短路径长度小于给定的路径长度,则不正确;依次将路径中的路径用墙隔离,如果隔离后仍存在从起点到

凌语小辉 632

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

BFS 题目整理 POJ2251、HDU1429、POJ3182、USACO06、UVA10047 The Monocycle

BFS POJ 2251 Dungeon Master 题意 有一个三维监狱,每一步可以向东,向西,向北,向南,向上,向下移动 ‘S’为起点,'E’为出口,’#‘为墙,’.'为路 分析 找到起点,直接bfs即可 代码 #include <iostream> #include <cstdio> #include <algorithm> #include <q...

qcwlmqy的博客 214

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

POJ 1024 Tester Program

/* WA 主要思路: 首先DFS建立层次图。 然后判断,路径是否唯一,墙壁是否重复。 */ #include //#define TEST using namespace std; const int nMax = 105; const int mMax = 10100; int dis_s[nMax][nMax], dis_e[nMax][nMax]; char s[mMax]; stru

884

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

poj 1137 / zoj 1301 (BFS)

最近想刷一些搜索题目, 看到了这题, 这题就是个bfs需要点状压的小技巧, 感觉做搜索题目, 主要还是要仔细很耐心吧。。。 (此题在poj上有个trick, 就是一个房间开关灯时要按字典序, 读入后排个序就可以了。。。) 代码很丑: #include #include #include #include #include #include #include #inc

一个人的生活 954

POJ1024 Tester Program

题目来源:http://poj.org/problem?id=1024 题目大意:   有一个迷宫,迷宫的起点在(0,0)处。给定一条路径,和该迷宫墙的设置,要求验证该路径是否为唯一的最短路径,该种墙的设置中是否存在多于的墙,可结合图进行理解。   输入:第一行制定测试用例数。每个测试用例的第一行为两个正整数,指明迷宫的长和宽。接下来是给定的最短路径,用由L(左)R(右)U(上)D(下)组...

weixin_30256901的博客 195

Poj 1024

传送门 判断给定的路径是否是迷宫的唯一最短路径,判断迷宫是否有墙多余 bfs计算出每个点分别到起点和终点的最短路径 路径是否是迷宫的唯一最短路径:将路径上的点和墙两侧的点标记,查看是否有非标记的点到起点和终点之和小于等于给定路径长度 是否有墙多余:设墙两侧的点分别为a、b,若a到起点的距离与b到终点的距离大于路径长度并且a到终点的距离与b到起点的距离大于路径长度,则墙多余   ...

weixin_30627341的博客 203

poj1024:Tester Program给出最短路径求对应迷宫

题意大概如下:給出最短路径,要求一个迷宫,使得该迷宫的唯一最短路径即为此路径,且迷宫中的每一堵墙都不能多余。然后给出一种方案,要你判断此方案是否正确。 我的算法是:先bfs得出一条最短路径和最短路径的总数,若大于1或者跟输入的最短路径不同均不可以。然后计算对于每一个墙,如果可以通过该墙的话最短路径是多少。 如果有算出大于输入的最短路径的(也即是该墙多余),也不可以。算法完毕; AC代码如下:

To lose to pursue. 1657

poj 3439 Server Relocation 最短路bfs

题意: 给n

sepNINE的专栏 692

poj 搜索题目

简单搜索(1)深度优先搜索 (poj2488,poj3009,poj1321) (2)广度优先搜索 (poj3278,poj1426,poj3126,poj3087.poj3414,poj2251,poj3083)(3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 搜索、回溯、遍历 1022 1111 1118 1129 11...

angel774422的博客 217

poj 1753 骑士游历问题 广度优先搜索 + 位压缩

//====================================================================== // //> Author : flowertree //> About : poj 1753 //> Time : 2015.12.28 //> Algorithm : BFS + 位压缩 黑白棋问题 //

379

[POJ2387] Til the Cows Come Home(最短路)

传送门:POJ 2387 Til the Cows Come Home 千万看清点数和路径数的输入顺序。否则。你会像我一样WA和RE一个下午。 #include <iostream> #include <vector> #include <queue> #include <string.h> #define INF 0x3f3f3f3f us...

坤斤拷的博客 183
上一篇: poj1059 模拟
下一篇: poj1021 概率,最小表示
琴空
博客等级 码龄16年 48粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值