洛谷P1135多题解

解法1:BFS,有n个节点每个节点最多被访问一次,所以BFS时间复杂度为O(n)。注意a==b的特判。
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N = 205;
int n, a, b;
int k[N], s[N];
bool st[N];
int dy[2];
int main() {cin >> n >> a >> b;if (a == b) {cout << 0 << endl;return 0;}for (int i = 1; i <= n; i++) {cin >> k[i];}memset(s, -1, sizeof(s));s[a] = 0;st[a] = true;queue<int> q;q.push(a);while (q.size()) {int t = q.front();q.pop();dy[0] = k[t], dy[1] = -k[t];for (int i = 0; i < 2; i++) {int u = t + dy[i];if (u == b) {cout << s[t] + 1 << endl;return 0;}if (u < 1 || u > n || st[u])continue;st[u] = true;s[u] = s[t] + 1;q.push(u);}}cout << -1 << endl;return 0;
}
解法2:DFS,时间复杂度是O(2^n)有点大。剪了枝还是TLE
#include<iostream>
#include<climits>
#include<cstring>
using namespace std;
int n, a, b;
int k[205];
bool st[205];
int minn = INT_MAX;
void dfs(int u, int step){if(step >= minn)return;if(u == b){minn = min(minn, step);return;}if(u < 1 || u > n || st[u])return;st[u] = true;int up = u + k[u];if(up <= n){dfs(up, step + 1);}int down = u - k[u];if(down >= 1){dfs(down, step + 1);}st[u] = false;
}
int main(){cin >> n >> a >> b;for(int i = 1; i <= n; i++){cin >> k[i];}dfs(a, 0);if(minn == INT_MAX)cout << -1 << endl;else cout << minn << endl;return 0;
}
解法3:迪杰斯特拉堆优化,时间复杂度为O((v+e)logv)
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N = 205;
int k[N];
bool st[N];
int dist[N];
typedef pair<int, int>PII;
int n, a, b;
int dijkstra(){memset(dist, 0x3f, sizeof(dist));dist[a] = 0;priority_queue<PII, vector<PII>, greater<PII>>heap;heap.push({0, a});while(heap.size()){auto t = heap.top();heap.pop();int ver = t.second, distance = t.first;if(ver == b)return distance;if(st[ver])continue;st[ver] = true;int up = ver + k[ver];if(up <= n && dist[up] > distance + 1){dist[up] = distance + 1;heap.push({dist[up], up});}int down = ver - k[ver];if(down >= 1 && dist[down] > distance + 1){dist[down] = distance + 1;heap.push({dist[down], down});}}return -1;
}
int main(){cin >> n >> a >> b;for(int i = 1; i <= n; i++){cin >> k[i];}int t = dijkstra();cout << t << endl;return 0;
}
解法4:SPFA,时间复杂度最坏是O(n^2)
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N = 205;
int n, a, b;
int dist[N];
bool st[N];
int k[N];
int spfa(){memset(dist, 0x3f, sizeof(dist));dist[a] = 0;queue<int> q;q.push(a);st[a] = true;while(q.size()){int t = q.front();q.pop();st[t] = false;int up = t + k[t];if(up <= n && dist[up] > dist[t] + 1){dist[up] = dist[t] + 1;if(!st[up]){q.push(up);st[up] = true;}}int down = t - k[t];if(down >= 1 && dist[down] > dist[t] + 1){dist[down] = dist[t] + 1;if(!st[down]){q.push(down);st[down] = true;}}}if(dist[b] == 0x3f3f3f3f)return -1;return dist[b];
}
int main(){cin >> n >> a >> b;for(int i = 1; i <= n; i++){cin >> k[i]; }int t = spfa();cout << t << endl;return 0;
}
相关文章:
洛谷P1135多题解
解法1:BFS,有n个节点每个节点最多被访问一次,所以BFS时间复杂度为O(n)。注意ab的特判。 #include<iostream> #include<cstring> #include<queue> using namespace std; const int N 205; int n, a, b; int k[N], s[N]; b…...
用AI写游戏3——deepseek实现kotlin android studio greedy snake game 贪吃蛇游戏
项目下载 https://download.csdn.net/download/AnalogElectronic/90421306 项目结构 就是通过android studio 建空项目,改下MainActivity.kt的内容就完事了 ctrlshiftalts 看项目结构如下 核心代码 MainActivity.kt package com.example.snakegame1// MainA…...
Python 错误和异常处理
目录 try-except块 例子: 输出: 捕获多种异常 例子: else和finally 例子: 输出: 自定义异常 例子: 输出: 好的,简单来说,错误和异常处理是编程中用来处理程序…...
论文解读 | AAAI'25 Cobra:多模态扩展的大型语言模型,以实现高效推理
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 个人信息 作者:赵晗,浙江大学-西湖大学联合培养博士生 内容简介 近年来,在各个领域应用多模态大语言模型(MLLMs&…...
DPVS-3: 双臂负载均衡测试
测试拓扑 双臂模式, 使用两个网卡,一个对外,一个对内。 Client host是物理机, RS host都是虚拟机。 LB host是物理机,两个CX5网卡分别在两个子网。 配置文件 用dpvs.conf.sample作为双臂配置文件,其中…...
Qt 中集成mqtt协议
一,引入qmqtt 库 我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台时 方便,直接编译就行了。 原始仓库路径:https://github.com/emqx/qmqtt/tree/master 二,使用 声明一个单例类,将订阅到…...
C语言图结构学习笔记
1. 图的定义 图(Graph)是一种数据结构,由顶点(Vertex)和边(Edge)组成,用于表示对象及其相互关系。图可以是有向图(Directed Graph)或无向图(Undi…...
记一次复杂分页查询的优化历程:从临时表到普通表的架构演进
1. 问题背景 在项目开发中,我们需要实现一个复杂的分页查询功能,涉及大量 IP 地址数据的处理和多表关联。在我接手这个项目的时候,代码是这样的 要知道代码里面的 ipsList 数据可能几万条甚至更多,这样拼接的sql,必然是要内存溢出的,一味地扩大jvm参数不…...
架构师面试(六):熔断和降级
问题 在千万日活的电商系统中,商品列表页服务通过 RPC 调用广告服务;经过统计发现,在最近10秒的时间里,商品列表页服务在对广告服务的调用中有 98% 的调用是超时的; 针对这个场景,下面哪几项的说法是正确的…...
细说 Java 引用(强、软、弱、虚)和 GC 流程(二)
一、前文回顾 在 细说Java 引用(强、软、弱、虚)和 GC 流程(一) 我们对Java 引用有了总体的认识,本文将继续深入分析 Java 引用在 GC 时的一些细节。 还是从我们在前文中提到的引用流程图里说起,这里不清…...
【深度学习】Unet的基础介绍
U-Net是一种用于图像分割的深度学习模型,特别适合医学影像和其他需要分割细节的任务。如图: Unet论文原文 为什么叫U-Net? U-Net的结构像字母“U”,所以得名。它的结构由两个主要部分组成: 下采样(编码…...
Python--函数进阶(下)
3. 返回值与print的辨析 3.1 返回值的作用 return:将结果传递给调用者,可后续处理。print:仅输出到控制台,不保留数据。 def add(a, b):return a bresult add(3, 4) # 结果存储在result中 print(result) # …...
ROS2机器人开发--服务通信与参数通信
服务通信与参数通信 在 ROS 2 中,服务(Services)通信和参数(Parameters)通信是两种重要的通信机制。服务是基于请求和响应的双向通信机制。参数用于管理节点的设置,并且参数通信是基于服务通信实现的。 1 …...
DeepSeek写贪吃蛇手机小游戏
DeepSeek写贪吃蛇手机小游戏 提问 根据提的要求,让DeepSeek整理的需求,进行提问,内容如下: 请生成一个包含以下功能的可运行移动端贪吃蛇H5文件: 要求 蛇和食物红点要清晰,不超过屏幕外 下方有暂停和重新…...
【开源项目】分布式文本多语言翻译存储平台
分布式文本多语言翻译存储平台 地址: Gitee:https://gitee.com/dreamPointer/zza-translation/blob/master/README.md 一、提供服务 分布式文本翻译服务,长文本翻译支持流式回调(todo)分布式文本多语言翻译结果存储服…...
代码随想录刷题day29|(栈与队列篇:队列)225.用队列实现栈
目录 一、队列基本知识 二、队列在Java中的实现 1.Queue 2.Deque ①实现普通队列 ②实现栈 ③实现双端队列 3.基于底层数据结构 4.组合模式 三、相关算法题目 思路 代码 四、栈和队列总结 一、队列基本知识 队列只能在队尾添加元素,在队头删除元素&a…...
Python安全之反序列化——pickle/cPickle
一. 概述 Python中有两个模块可以实现对象的序列化,pickle和cPickle,区别在于cPickle是用C语言实现的,pickle是用纯python语言实现的,用法类似,cPickle的读写效率高一些。使用时一般先尝试导入cPickle&…...
Deepin(Linux)安装MySQL指南
1.下载 地址:https://downloads.mysql.com/archives/community/ 2.将文件解压到 /usr/local 目录下 先cd到安装文件所在目录再解压,本机是cd /home/lu01/Downloads sudo tar -xvJf mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local3.创建软链…...
vue-fastapi-admin 部署心得
vue-fastapi-admin 部署心得 这两天需要搭建一个后台管理系统,找来找去 vue-fastapi-admin 这个开源后台管理框架刚好和我的技术栈所契合。于是就浅浅的研究了一下。 主要是记录如何基于原项目提供的Dockerfile进行调整,那项目文件放在容器外部…...
计算机视觉算法实战——三维重建(主页有源码)
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 1. 三维重建领域简介 三维重建(3D Reconstruction)是计算机视觉的核心任务之一,旨在通过多视角图像、视频…...
先进制造aps专题三十 用免费生产排程软件isuperaps进行长期生产计划制定
isuperaps是生产排产软件,同时也可以用来制定长期生产计划 通过isuperaps制定长期生产计划,一个指导原则就是大bom, 单工序,大bom的意思是bom中只包含主要的半成品和原料,单工序的意思是半成品/产品生产以工厂或车间为基本生产单…...
DeepSeek使用从入门到精通
1. DeepSeek概述 - DeepSeek是国产大模型,提供网页版和App版。因其强大功能,遭受网络攻击,但国内用户可直接使用。 2. 入门技巧 - 忘掉复杂提示词:用简洁明了的需求指令,AI能自我思考并生成优质内容 - 明确需求&#…...
迎接DeepSeek开源周[Kimi先开为敬]发布开源最新Muon优化器可替代 AdamW计算效率直接翻倍
Muon优化器在小规模语言模型训练中表现出色,但在大规模模型训练中的可扩展性尚未得到证实。月之暗面通过系统分析和改进,成功将 Muon 应用于 3B/16B 参数的 MoE 模型训练,累计训练 5.7 万亿 token。结果表明,Muon 可以替代 AdamW …...
【工作流】Spring Boot 项目与 Camunda 的整合
【工作流】Spring Boot 项目与 Camunda 的整合 【一】Camunda 和主流流程引擎的对比【二】概念介绍【1】Camunda 概念:【2】BPMN 概念 【三】环境准备【1】安装流程设计器CamundaModeler【画图工具】(1)下载安装 【2】CamundaModeler如何设计…...
Grouped-Query Attention(GQA)详解: Pytorch实现
Grouped-Query Attention(GQA)详解 Grouped-Query Attention(GQA) 是 Multi-Query Attention(MQA) 的改进版,它通过在 多个查询头(Query Heads)之间共享 Key 和 Value&am…...
docker基操
docker基操 首先就是安装docker使用docker:创建容器-制作一个镜像-加载镜像首先就是安装docker 随便找一个教程安装就可以,安装过程中主要是不能访问谷歌,下面这篇文章写了镜像的一些问题: 安装docker的网络问题 使用docker:创建容器-制作一个镜像-加载镜像 主要是参考:这篇…...
SF-HCI-SAP问题收集1
最近在做HCI的集成,是S4的环境,发现很多东西都跑不通,今天开始收集一下错误点 如果下图冲从0001变成0010,sfiom_rprq_osi表就会存数据,系统检查到此表就会报错,这个选项的作用就是自定义信息类型也能更新&a…...
当 OpenAI 不再 open,DeepSeek 如何掀起 AI 开源革命?
开源与闭源的路线之争成为了行业瞩目的焦点,DeepSeek掀起的 AI 开源风暴! 一、硅谷“斯普特尼克时刻” 1957年,苏联将人类首颗人造卫星“斯普特尼克”送上太空,美国举国震动。 这颗“篮球”般的卫星,刺痛了自诩科技霸…...
理解 logits_to_keep = logits_to_keep + 1 在 _get_per_token_logps 中的作用
理解 logits_to_keep logits_to_keep 1 在 _get_per_token_logps 中的作用 source: anaconda3/envs/xxx/lib/python3.10/site-packages/trl/trainer/grpo_trainer.py def _get_per_token_logps(self, model, input_ids, attention_mask, logits_to_keep):# We add 1 to logi…...
论文笔记-WSDM2025-ColdLLM
论文笔记-WSDM2025-Large Language Model Simulator for Cold-Start Recommendation ColdLLM:用于冷启动推荐的大语言模型模拟器摘要1.引言2.前言3.方法3.1整体框架3.1.1行为模拟3.1.2嵌入优化 3.2耦合漏斗ColdLLM3.2.1过滤模拟3.2.2精炼模拟 3.3模拟器训练3.3.1LLM…...
