当前位置: 首页 > news >正文

CF253C Text Editor 题解

思路

既然要求最少步数,那我们可以用bfs

如果鼠标的位置比上一行的行末位置大,如果按上的话,移到上一行的行末。如果鼠标的位置比下一行的行末位置大,如果按下的话,移到下一行的行末。
注

意当鼠标位置超过当前行最大值的时候,要让当前位置去到最大值处。

注意,需要文件读写。

代码

#include<bits/stdc++.h>
#include<cstring>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#include<map>
#define ll long long
#define lhs printf("\n");
using namespace std;
const int N=1e3+10;
const int M=1e5+10;
const int inf=0x3f3f3f3f;
int a[N];
int n;
int sx,sy,ex,ey;
int vis[114][M];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
struct node
{int x,y,step;
};
void bfs(int xx,int yy)
{queue<node> q;vis[xx][yy]=1;q.push(node{xx,yy,0});while(q.size()){node now=q.front();q.pop();	if(now.x==ex and now.y==ey){printf("%d",now.step);return;}for(int i=0;i<4;i++){int nx=now.x+dx[i];int ny=now.y+dy[i];if(ny>=a[nx]){ny=a[nx];}if(nx>=1 and nx<=n and ny>=1 and ny<=a[nx] and vis[nx][ny]==0){vis[nx][ny]=1;q.push(node{nx,ny,now.step+1});}}}
}
int main()
{	freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[i]++;}scanf("%d%d%d%d",&sx,&sy,&ex,&ey);bfs(sx,sy);return 0;
}

AC记录

http://www.lryc.cn/news/396717.html

相关文章:

  • Spring Boot 创建定时任务
  • Vue使用Echarts(入门级)
  • 2025届秋招提前批信息汇总(计算机类)
  • Scala Collection(集合)
  • Go 语言 UUID 库 google/uuid 源码解析:UUID version4 的实现
  • 开发个人Go-ChatGPT--6 OpenUI
  • Spring中的工厂模式详解及应用示例
  • Electron 简单搭建项目
  • 旗晟智能巡检机器人:开启工业运维的智能化新篇章
  • vue3的常用 Composition API有哪些?
  • 深度优先算法-DFS(算法篇)
  • C++模块化之内部类
  • k8s-第九节-命名空间
  • 【AI大模型新型智算中心技术体系深度分析 2024】
  • 王道计算机数据结构+插入排序、冒泡排序、希尔排序、快速排序、简单选择排序
  • python爬虫学习(三十三天)---多线程上篇
  • JavaScript 原型链那些事
  • nginx的知识面试易考点
  • 每日Attention学习9——Efficient Channel Attention
  • Java语言程序设计——篇三(1)
  • 基于SpringBoot实现轻量级的动态定时任务调度
  • 夸克升级“超级搜索框” 推出AI搜索为中心的一站式AI服务
  • element-ui el-select选择器组件下拉框增加自定义按钮
  • Python基于you-get下载网页上的视频
  • 大模型/NLP/算法面试题总结3——BERT和T5的区别?
  • vue3项目打包的时候,怎么区别测试环境,和本地环境
  • 小特性 大用途 —— YashanDB JDBC驱动的这些特性你都get了吗?
  • 全网最全的软件测试面试八股文
  • VMware虚拟机配置桥接网络
  • 华为机考真题 -- 攀登者1