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

加盟做地方门户网站/青岛百度快速优化排名

加盟做地方门户网站,青岛百度快速优化排名,益阳营销网站建设,企业网站建设规划pptE. Escape 思路: 可以看成 Sneaker 和杀戮机器人都不能在原地停留,然后杀戮机器人有个活动范围限制。如果 Sneaker 和杀戮机器人可以在原地停留,那么 Sneaker 到达一个点肯定会尽可能早,而且时间必须比杀戮机器人到达这个点短。那…

E. Escape

在这里插入图片描述

思路:

可以看成 Sneaker 和杀戮机器人都不能在原地停留,然后杀戮机器人有个活动范围限制。如果 Sneaker 和杀戮机器人可以在原地停留,那么 Sneaker 到达一个点肯定会尽可能早,而且时间必须比杀戮机器人到达这个点短。那么预处理一下每个点最早什么时候会被杀戮机器人到达,然后在这个基础上处理出1 ∼n 的最短路即可。

由于每个机器每个时刻都不会停。我们需要分奇数和偶数时刻,来记录它们会出现的位置。

我们把点拆分为i,i+n两个点做记录。

先预处理bfs,记录所有机器人的可达点。

再跑一遍bfs,计算从起点到终点,需要的最短路径。单组数据时间复杂度 O(n + m)。

代码:

#include <bits/stdc++.h>
#define int long long
#define pii pair<int, int>
using namespace std;
const int N = 1e5 + 5;
const int mod = 998244353;
#define ll long long
const int maxn = 1000010;
#define inf 2000000000int n, m, d;
vector<int> g[maxn];
int k;
int dis[maxn];
int pre[maxn];
int dis2[maxn];
int u, v;
bool vis[maxn];void solve()
{scanf("%lld%lld%lld", &n, &m, &d);// initfor (int i = 0; i <= n; ++i){g[i].clear();vis[i] = vis[i + n] = 0;pre[i] = pre[i + n] = 0;dis[i] = dis[i + n] = inf;dis2[i] = dis2[i + n] = inf;}// build graghfor (int i = 1; i <= m; ++i){scanf("%lld%lld", &u, &v);--u, --v; // 点下标偏移到[0,n-1]g[u].push_back(v);g[v].push_back(u);}// cal dis2.scanf("%lld", &k);queue<int> q;for (int i = 1; i <= k; ++i){scanf("%lld", &u);--u; // 点下标偏移到[0,n-1]q.push(u);vis[u] = 1;dis2[u] = 0;}while (!q.empty()){u = q.front();q.pop();int f = u / n; // 偶数/奇数时刻int x = u % n; // 原始点if (dis2[u] == d){ // 超出范围continue;}for (auto v : g[x]){int y = v + n * (!f); // 下一个点if (!vis[y] && dis2[y] > dis2[u] + 1){dis2[y] = dis2[u] + 1;q.push(y);vis[y] = 1;}}}// cal dis.for (int i = 0; i <= 2 * n; ++i){vis[i] = 0;}pre[0] = -1; // 记录位置,便于输出答案dis[0] = 0;q.push(0);vis[0] = 1;while (!q.empty()){ // bfs过程同上,不赘述u = q.front();q.pop();int f = u / n;int x = u % n;for (auto v : g[x]){int y = v + n * (!f);if (dis[y] <= dis[u] + 1){continue;}if (dis[u] + 1 >= dis2[y]){continue;}dis[y] = dis[u] + 1;pre[y] = u;q.push(y);vis[y] = 1;}}if (!vis[n - 1] && !vis[2 * n - 1]){ //printf("-1\n");return;}int ed = dis[n - 1] < dis[2 * n - 1] ? n - 1 : 2 * n - 1;printf("%lld\n", dis[ed]);vector<int> res;while (ed != -1){res.push_back(ed);ed = pre[ed];}reverse(res.begin(), res.end());for (auto x : res){// 这里 x % n 求出原始点,// +1是为了复位,偏移到 [1,n]printf("%lld ", x % n + 1);}printf("\n");
}signed main()
{// std::ios::sync_with_stdio(0);// cin.tie(0);// cout.tie(0);int t = 1;scanf("%lld", &t);while (t--){solve();}return 0;
}

相关文章:

2024icpc(Ⅱ)网络赛补题E

E. Escape 思路&#xff1a; 可以看成 Sneaker 和杀戮机器人都不能在原地停留&#xff0c;然后杀戮机器人有个活动范围限制。如果 Sneaker 和杀戮机器人可以在原地停留&#xff0c;那么 Sneaker 到达一个点肯定会尽可能早&#xff0c;而且时间必须比杀戮机器人到达这个点短。那…...

mac怎么设置ip地址映射

最近开发的项目分为了两种版本&#xff0c;一个自己用的&#xff0c;一个是卖出去的。 卖出的域名是和自己的不一样的&#xff0c;系统中有一些功能是只有卖出去的版本有的&#xff0c;但我们开发完之后还得测试&#xff0c;那就需要给自己的电脑配置一个IP地址映射了&#xf…...

StringReader 使用 JAXB自动将 XML 数据映射到 Java 对象

import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import java.io.StringReader; public class JAXBExample { public static void main(String[] args) { try { // 假设这是从某处获取的XML字符串 S…...

【系统架构设计师】专题:系统分析和设计

文章目录 一、处理流程设计1.1 流程表示工具1.2 业务流程重组BPR1.3 业务流程管理BPM二、系统设计三、人机界面设计四、结构化方法4.1 结构化分析(Structured Analysis,SA)。4.2 结构化设计(Structured Design,SD)。4.3 结构化编程(Structured Programming,SP)。4.4 数据库设…...

Lambda表达式(Java)

1.Lambda表达式 Lambda是一个匿名函数&#xff0c;我们可以将Lambda表达式理解为一段可以传递的代码&#xff08;将代码像数据一样传递&#xff09;。 “->”&#xff08;Lambda操作符&#xff09;左边&#xff1a;Lambda表达式的所有参数。右边&#xff1a;Lambda体&#x…...

不同的子序列

题目 给定一个字符串 s 和一个字符串 t &#xff0c;计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指&#xff0c;通过删除一些&#xff08;也可以不删除&#xff09;字符且不干扰剩余字符相对位置所组成的新字符串。&#xff08;例如&#xff0c;“ACE” 是 “…...

CI24R1——精简版Si24R1,高性价比替代XN297开发资料

CI24R1为了减低用户的开发时间&#xff0c;将2.4G芯片开发出2.4G小模块&#xff0c;用户直接贴片调试&#xff0c;大大降低了开发时间跟生产工序。广泛应用在灯控、鼠标、玩具等智能物联网产品。 CI24R1小模块&#xff08;内置天线&#xff09; 是 2.4GHz 模块。该模块核心处理…...

MySQL递归查询笔记

目录 一、创建表结构和插入数据 二、查询所有子节点 三、查询所有父节点 四、查询指定节点的根节点 五、查询所有兄弟节点&#xff08;同级节点&#xff09; 六、获取祖先节点及其所有子节点 七、查询每个节点之间的层级关系 八、查询指定节点之间的层级关系 一、创建表…...

java中的位运算

位运算是对整数的二进制位进行操作的一种运算。在java中long, int, short, char和byte类型都可以使用位运算。 位运算的过程如下&#xff1a;首先将十进制整数转换成二进制表示形式&#xff0c;然后将位运算符应用于每个二进制数位&#xff0c;并计算结果。最后&#xff0c;将…...

llamafactory0.9.0微调qwen2vl

LLaMA-Factory/data/README_zh.md at main hiyouga/LLaMA-Factory GitHubEfficiently Fine-Tune 100+ LLMs in WebUI (ACL 2024) - LLaMA-Factory/data/README_zh.md at main hiyouga/LLaMA-Factoryhttps://github.com/hiyouga/LLaMA-Factory/blob/main...

Electron 隐藏顶部菜单

隐藏前&#xff1a; 隐藏后&#xff1a; 具体设置代码&#xff1a; 在 main.js 中加入这行即可&#xff1a; // 导入模块 const { app, BrowserWindow ,Menu } require(electron) const path require(path)// 创建主窗口 const createWindow () > {const mainWindow ne…...

软件测试学习笔记丨curl命令发送请求

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32332 一、简介 cURL是一个通过URL传输数据的&#xff0c;功能强大的命令行工具。cURL可以与Chrome Devtool工具配合使用&#xff0c;把浏览器发送的真实请求还原出来&#xff0c;附带认证信…...

STM32+PWM+DMA驱动WS2812 —— 2024年9月24日

一、项目简介 采用STM32f103C8t6单片机&#xff0c;使用HAL库编写。项目中针对初学者驱动WS2812时会遇到的一些问题&#xff0c;给出了解决方案。 二、ws2812驱动原理 WS2812采用单线归零码的通讯方式&#xff0c;即利用高低电平的持续时间来确定0和1。这种通信方式优点是只需…...

MMD模型及动作一键完美导入UE5-IVP5U插件方案(二)

1、下载并启用IVP5U插件 1、下载IVP5U插件, IVP5U,点击Latest下载对应引擎版本,将插件放到Plugins目录,同时将.uplugin文件的EnableByDefault改为false 2、然后通过Edit->Plugins启用插件 2、导入pmx模型 1、直接在Content的某个目录拖入pmx模型,选择默认参数 2、…...

C++函数指针

函数指针是将一个函数赋值给一个变量的方法 我们使用函数的方法&#xff0c;可能会给函数传入参数&#xff0c;或者传入参数&#xff0c;函数可能有返回值&#xff0c;也可能没有返回值&#xff08;void&#xff09; 下面这个例子&#xff0c;我们调用了HelloWorld函数 auto关…...

汽车信息安全 -- 再谈车规MCU的安全启动

目录 1. 安全启动流程回顾 1.1 TC3xx的安全启动 1.2 RH850的安全启动 1.3 NXP S32K3的安全启动 1.4 小结 2.信任链的问题 3.国产HSM IP的拓展 今天接着 汽车信息安全 -- 存到HSM中的密钥还需包裹吗&#xff1f;-CSDN博客这篇文章深究另一个重要功能-- 安全启动。 该文章…...

[Linux]从零开始的Linux的远程方法介绍与配置教程

一、为什么需要远程Linux 相信大家在学习Linux时&#xff0c;要么是使用Linux的虚拟机或者在物理机上直接安装Linux。这样确实非常方便&#xff0c;我们也能直接看到Linux的桌面或者终端。既然我们都能直接看到终端或者Linux的桌面了&#xff0c;那我们为什么还要远程Linux呢&a…...

手机改IP地址怎么弄?全面解析与操作指南

在当今数字化时代&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;其重要性不言而喻。有时候&#xff0c;出于隐私保护、网络访问需求或其他特定原因&#xff0c;我们可能需要更改手机的IP地址。然而&#xff0c;对于大多数普通用户来说&#xff0c;如何操作可能还是…...

【React】useState 和 useRef:项目开发中该如何选择

如果你正踏入用 React 进行网页开发的世界&#xff0c;那你可能已经遇到了像 useState 和 useRef 这样的术语。这两个 Hook 在构建交互性和动态组件时起着至关重要的作用。 下面&#xff0c;我们将探讨它们是什么&#xff0c;它们的功能&#xff0c;它们的区别&#xff0c;并通…...

python装饰器用法

为什么用装饰器&#xff1f; 第一个原因是&#xff0c;使用装饰器可以提升代码复用&#xff0c;避免重复冗余代码。如果我有多个函数需要测量执行时间&#xff0c;我可以直接将装饰器应用在这些函数上&#xff0c;而不是给多个函数加上一样的代码。这样的代码既元余也不方便后…...

AI 写作太死板?原因竟然是这个!

有些同学跟我埋怨说AI生成的文章太死板&#xff0c;一堆的“首先、其次、然后、再次、接着、总而言之……”&#xff0c;说话太官方&#xff0c;内容还很水。 想要让它模仿谁的语气&#xff0c;或者谁的文章&#xff0c;一点儿都不像。 名人都不模仿不了&#xff0c;更别说模…...

ansible实用模块

简介 ansible是基于 paramiko 开发的,并且基于模块化工作&#xff0c;本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块&#xff0c;ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents&#xff0c;因为它们是基于ssh来和远程主机通讯的。…...

【JavaScript】JIT

JIT实际上指&#xff0c;JS的编译过程、运行时。 Just in Time 在传统的编译语言里&#xff0c;比如JAVA、Go等&#xff0c;是提前编译的&#xff0c;它们的执行是先在本地编译出一个"东西"&#xff0c;然后在放到服务器上运行。 提前编译的三大过程&#xff1a; …...

Matlab实现麻雀优化算法优化回声状态网络模型 (SSA-ESN)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 麻雀搜索算法&#xff08;Sparrow Search Algorithm, SSA&#xff09;是一种新兴的群体智能优化算法&#xff0c;灵感来源于麻雀的觅食行为及其在面临危险时的预警机制。SSA通过模拟麻雀的这些自然行为来寻找问题…...

从 TCP Reno 经 BIC 到 CUBIC

重读 TCP拥塞控制算法-从BIC到CUBIC 以及 cubic 的 tcp friendliness 与拐点控制 这两篇文章&#xff0c;感觉还是啰嗦了&#xff0c;今日重新一气呵成这个话题。 reno 线性逼近管道容量 Wmax&#xff0c;相当于一次查询(capacity-seeking)&#xff0c;但长肥管道从 0.5*Wmax …...

工厂模式与建造者模式的区别

在软件设计中&#xff0c;工厂模式和建造者模式是两种常见的设计模式&#xff0c;它们都是用于创建对象&#xff0c;但是各自有不同的应用场景和目的。本文将通过餐馆点餐的例子&#xff0c;深入探讨这两种模式的区别。 工厂模式 工厂模式的核心思想是通过一个抽象工厂类来创…...

电脑usb接口封禁如何实现?5种禁用USB接口的方法分享!(第一种你GET了吗?)

“防患于未然&#xff0c;安全始于细节。”在信息技术飞速发展的今天&#xff0c;企业的信息安全问题日益凸显。 USB接口作为数据传输的重要通道&#xff0c;在带来便利的同时&#xff0c;也成为了数据泄露和安全风险的高发地。 因此&#xff0c;对电脑USB接口进行封闭管理&a…...

有效的括号

有效的括号 思路&#xff1a;我们先创建一个栈&#xff0c;让左括号入栈&#xff0c;与右括号判断 Stack stacknew Stack<>(); 将字符串中的符号转化为字符 char ch s.charAt(i); 完整代码如下&#xff1a; class Solution {public boolean isValid(String s) {if (s …...

Vue3.0面试题汇总

Composition API 可以说是Vue3的最大特点&#xff0c;那么为什么要推出Composition Api&#xff0c;解决了什么问题&#xff1f; 通常使用Vue2开发的项目&#xff0c;普遍会存在以下问题&#xff1a; 代码的可读性随着组件变大而变差每一种代码复用的方式&#xff0c;都存在缺…...

TCP编程:从入门到实践

目录 一、引言 二、TCP协议原理 1.面向连接 2.可靠传输 三、TCP编程实践 1.TCP服务器 2.TCP客户端 四、总结 本文将带你了解TCP编程的基本原理&#xff0c;并通过实战案例&#xff0c;教你如何在网络编程中运用TCP协议。掌握TCP编程&#xff0c;为构建稳定、高效的网络通信…...