蓝桥杯练习:景区导游

视频
UP主的博客
在这里插入图片描述
在这里插入图片描述

  • 暴力做法,能过 42%数据。如果内存开 1e4+10 能过 40%,如果开 2e5+10就只能过 25%
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
const int N = 1e4+10;
using namespace std;
//存两点的距离
typedef pair<int,int> PII;
map<PII,int> st;
//存游览路径
int a[N];
//存图
vector<PII> edge[N];/*u:起点v:终点n:当前节点p:当前节点的父节点sum:u 到 n 的路径长dfs:搜索从 u 到 v 的路径长度,记录在 st 中*/
bool dfs(int u,int v,int n,int p,int sum){if(n==v){st[{u,v}]=sum;st[{v,u}]=sum;return true;}for(int i=0;i<edge[n].size();i++){int son = edge[n][i].first;if(son == p)continue;int w = edge[n][i].second;if(dfs(u,v,son,n,sum+w))return true;}return false;
}void solve(){int n,k;cin>>n>>k;for(int i=1;i<=n-1;i++){int u,v,w;cin>>u>>v>>w;edge[u].push_back({v,w});edge[v].push_back({u,w});}for(int i=1;i<=k;i++)cin>>a[i];int ans = 0;for(int i=1;i<=k-1;i++){dfs(a[i],a[i+1],a[i],-1,0);ans += st[{a[i],a[i+1]}];}for(int i=1;i<=k;i++){int tmp = ans;if(i==1){tmp-=st[{a[i],a[i+1]}];}else if(i==k){tmp-=st[{a[i-1],a[i]}];}else{tmp-=st[{a[i-1],a[i]}];tmp-=st[{a[i],a[i+1]}];dfs(a[i-1],a[i+1],a[i-1],-1,0);tmp+=st[{a[i-1],a[i+1]}];}cout<<tmp<<endl;}}signed main( ){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T;T = 1;while (T--)solve( );return 0;
}
  • 正解:最近公共祖先
  1. LCA
  2. tarjan
  3. 树链剖分(博主觉得更好写)
    这道题听说是最近公共祖先的模板题,会模板就能做。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538462.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++基础】5.C++基本语法——《跟老吕学C++编程语言》

【C基础】5.C基本语法——《跟老吕学C编程语言》 C基本语法C程序结构编译&执行C程序C中的分号&块C标识符C关键字三字符组C中的空格 C基本语法 C程序可以定义为对象的集合&#xff0c;这些对象通过调用彼此的方法进行交互。 对象 - 对象具有状态和行为。例如&#xff1…

如何在Windows搭建WebDav服务,并外网可访问

目录 1. 安装IIS必要WebDav组件 2. 客户端测试 3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网 3.1 打开Web-UI管理界面 3.2 创建隧道 3.3 查看在线隧道列表 4. 公网远程访问 4.1 浏览器访问测试 4.2 映射本地盘符访问 4.3 安装Raidrive客户端 总结&…

【Vue3】路由的query参数和params参数

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

爬虫入门到精通_框架篇18(Scrapy中选择器用法)_sector,xpath,css,re

官方文档 Using selectors To explain how to use the selectors we’ll use the Scrapy shell (which provides interactive testing) and an example page located in the Scrapy documentation server: https://docs.scrapy.org/en/latest/_static/selectors-sample1.html…

光学型轮廓仪专业检测光学镜片曲面

在现代光学工业中&#xff0c;精密光学元件的制作是一项重要任务。而粗糙度是影响光学曲面质量的重要因素之一。为确保光学元件的卓越性能&#xff0c;轮廓仪成为不可或缺的检测工具。它以其超高精度、全自动化、多功能性和数据分析的特点&#xff0c;实现非球面镜片的高精度专…

SD-WAN解决企业云网融合问题

随着市场竞争不断加剧&#xff0c;企业在提升业务的同时也面临着新兴业务需求的涌现。数字化发展的关键路径包括上云、跨云、云迁移&#xff0c;而广域网连接已不再仅限于总部和分支机构之间。为应对企业云转型对网络架构提出的更高要求&#xff0c;SD-WAN成为企业解决云网融合…

LabVIEW飞机液压基础试验台测试系统

LabVIEW飞机液压基础试验台测试系统 为解决飞机液压基础实验台人工控制操作复杂、测试时间长、测试流程易出错等问题&#xff0c;开发了一套基于LabVIEW的飞机液压基础试验台测试系统。该系统通过计算机控制&#xff0c;实现了高度自动化的测试流程&#xff0c;有效提高了测试…

C语言 ——常量

3, 常量 3.1 什么是常量 ​ 程序运行的过程中&#xff0c;其值永远不会发生改变的数据 3.2 常量的分类 3.3 练习 ​ 给你一组数据&#xff0c;说出下面每组数据中&#xff0c;分别是哪种类型的常量 3.4 细节补充 实型常量的小细节&#xff1a; * 小数点前后&#xff0c;如果…

linux系统达梦数据库(安装及操作)

新建 dmdba 用户 注意: 安装前必须创建 dmdba 用户&#xff0c;禁止使用 root 用户安装数据库。 创建用户所在的组&#xff0c;命令如下&#xff1a; groupadd dinstall 创建用户&#xff0c;命令如下&#xff1a; useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba 修…

Linux运维之管理工具篇

一、前言 因运维过程中&#xff0c;经常会借助于很多工具来实现我们的监控、备份、校验&#xff0c;安全测试&#xff0c;批量操作&#xff0c;可视化辅助&#xff0c;集中管理等&#xff0c;甚至AI相关&#xff0c;本文特对常用工具进行梳理记录&#xff0c;以备不时之需及后…

Java虚拟机 - JVM

JVM的内存区域划分 JVM它其实也是一个进程,进程运行的过程中,会从操作系统中申请一些资源.内存就是其中的一种.这些内存就支撑了java程序的运行.JVM从系统中申请的一大块内存,会根据实际情况和使用用途来划分出不同的空间,这个就是区域划分.它一般分为 堆区, 栈区, 程序计数器…

10分钟快速入门UI自动化-Puppeteer

这次带大家入门的是转转内部实现UI自动化测试的一种方案&#xff1a; PuppeteerMocha 目前应用于转转图书、奢侈品、商业等业务等多个Web/H5业务的线上流程监控&#xff1b; 先简单介绍一下&#xff1a; Mocha 是JavaScript的一种单元测试框架 Puppeteer 是一个 Node 库&…