A - Environment-Friendly Travel Gym - 102501A

题意:给你一些交通方式和站点,不同的交通方式碳排放不一样,问从起点到终点距离不超过B的路径中最少的碳排放是多少。

思路:二维dijkstra,建图什么的倒不是很难,主要就是对二维dij的理解了;

dis[i][j] 表示的到达 i  点 距离 j 的最小二氧化碳花费

具体见代码(具体的dp思想还没想好)。

int sx, sy, ex, ey;
int mx;
int n, m, cnt;
int cot[N];
bool st[M][M];
PII p[N];
vector<array<int, 3>> g[N];
int dis[M][110]; // dis[i][j]为到了第i个点距离为j 时的最低碳排放量,就相当于dp的状态表示
int get(PII a, PII b)
{int x = a.xx - b.xx;int y = a.yy - b.yy;int t = ceil(sqrt(x * x + y * y));return t;
}
struct node
{int a, b, c;
} edge[N];
struct NODE
{int mon, dis, u;bool operator<(const NODE &w) const // 先距离再co2{if (dis != w.dis)return dis > w.dis;return mon > w.mon;}
};
void dijkstra()
{priority_queue<NODE> q;for (int i = 0; i < M; i++)for (int j = 0; j <= mx; j++)dis[i][j] = 1e18;dis[m][0] = 0;q.push({0, 0, m});while (q.size()){auto [M, D, u] = q.top();q.pop();if (st[u][D])// 由于距离的限制,并不是确定过最短路后就标记不再跑了,// 而是可以有多个距离经过这个点(不一定是最短路),// 然后这个点的这个点的co2被多种到这点的方式更新// 确定为这个距离下的最小co2花费,//(可能当前这一步的距离大了一点但是较其他距离的二氧化碳花费更少,// 所以我们要跟新所有合理距离,每一个距离取一个最小二氧化碳花费)// 才标记不再松弛优化距离这样才可以确保整体co2的最优值continue;st[u][D] = 1;for (auto [v, w1, w2] : g[u]){if (D + w2 > mx)continue;if (dis[v][D + w2] > dis[u][D] + w1){dis[v][D + w2] = dis[u][D] + w1;q.push({dis[v][D + w2], D + w2, v});}}}
}
void solve()
{cin >> sx >> sy >> ex >> ey;cin >> mx >> cot[0];cin >> n;for (int i = 1; i <= n; i++)cin >> cot[i];cin >> m;for (int i = 0; i < m; i++){cin >> p[i].xx >> p[i].yy;int x;cin >> x;for (int j = 1; j <= x; j++){int v, c;cin >> v >> c;edge[++cnt] = {i, v, c};}}for (int i = 1; i <= cnt; i++){auto [u, v, c] = edge[i];int dist = get(p[u], p[v]);g[u].pb({v, dist * cot[c], dist});g[v].pb({u, dist * cot[c], dist});}p[m] = {sx, sy};p[m + 1] = {ex, ey};for (int i = 0; i < m; i++){int dist1 = get(p[m], p[i]);int dist2 = get(p[m + 1], p[i]);g[m].pb({i, dist1 * cot[0], dist1});g[i].pb({m, dist1 * cot[0], dist1});g[m + 1].pb({i, dist2 * cot[0], dist2});g[i].pb({m + 1, dist2 * cot[0], dist2});}int dist = get(p[m], p[m + 1]);g[m + 1].pb({m, dist * cot[0], dist});g[m].pb({m + 1, dist * cot[0], dist});dijkstra();int ans = 1e18;for (int i = 0; i <= mx; i++)ans = min(ans, dis[m + 1][i]);if (ans == 1e18)cout << -1 << endl;elsecout << ans << endl;
}

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

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

相关文章

HTTPS:原理、使用方法及安全威胁

文章目录 一、HTTPS技术原理1.1 主要技术原理1.2 HTTPS的工作过程1.2.1 握手阶段1.2.2 数据传输阶段 1.3 CA证书的签发流程1.4 HTTPS的安全性 二、HTTPS使用方法三、HTTPS安全威胁四、总结 HTTPS&#xff08;全称&#xff1a;Hyper Text Transfer Protocol over Secure Socket …

如何使用 ArcGIS Pro 自动矢量化水系

对于某些要素颜色统一的地图&#xff0c;比如电子地图&#xff0c;可以通过图像识别技术将其自动矢量化&#xff0c;这里为大家介绍一下 ArcGIS Pro 自动矢量化水系的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的电子地图数据&#…

借鉴LangChain思想使用Java实现大模型Function_Call工具开发及调用功能

关注公众号&#xff0c;回复“工具调用”获取代码。 背景 博主之前研究的是ChatGLM3模型&#xff0c;该模型提供了Openai方式调用工具的代码。但后续转到Qwen1.5模型后&#xff0c;好像不可以直接用Openai接口的方式调用工具了。 然后&#xff0c;博主研究了Qwen-Agent框架&a…

Stable Diffusion XL之核心基础内容

Stable Diffusion XL之核心基础内容 一. Stable Diffusion XL核心基础内容1.1 Stable Diffusion XL的主要优化1.2 SDXL整体架构初识1.3 VAE模型1.VAE基本介绍2. VAE基本模型结构3.VAE的训练 1.4 U-Net模型&#xff08;Base部分&#xff09;1. 十四个基本模块概述2. SDXL_Spatia…

[Linux_IMX6ULL驱动开发]-基础驱动

驱动的含义 如何理解嵌入式的驱动呢&#xff0c;我个人认为&#xff0c;驱动就是嵌入式上层应用操控底层硬件的桥梁。因为上层应用是在用户态&#xff0c;是无法直接操控底层的硬件的。我们需要利用系统调用&#xff08;open、read、write等&#xff09;&#xff0c;进入内核态…

tensorflow安装以及在Anaconda中安装使用

在遥感领域进行深度学习时&#xff0c;通常使用python进行深度学习&#xff0c;会使用到tensorflow的安装&#xff0c;今天小编就给大家介绍如何在Anaconda中安装tensorflow&#xff01; 下载Anaconda Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open…

【数据分享】1981-2023年全国各城市逐日、逐月、逐年平均气温(shp格式)

气象数据是我们在各种研究中都会使用到的基础数据&#xff0c;之前我们分享了Excel格式的1981-2023年全国各城市的逐日、逐月、逐年平均气温数据&#xff08;可查看之前的文章获悉详情&#xff09;。 好多小伙伴拿到数据后问我们有没有GIS矢量格式的该数据&#xff0c;我们专门…

C语言二叉树和堆(个人笔记)

二叉树和堆 二叉树1二叉树的概念和结构1.1特殊的二叉树1.2二叉树的性质&#xff08;规定根节点的层数为1&#xff09;1.3二叉树的存储结构 2.二叉树的顺序结构和实现2.1二叉树的顺序结构2.2堆的概念和结构2.3堆的实现2.4堆的应用2.4.1堆排序 2.5TOP-K问题 3.二叉树的遍历4.二叉…

国赛大纲解读

1. 第一部分,是针对5G基础知识的掌握,第二部分是人工智能基本算法的掌握,就是人工智能的应用,用5G+人工智能(AI算法)进行网络优化的问题,要有网络优化的基础知识,比如说:某个区域的覆盖问题,覆盖特别差,但有数据,覆盖电频,srp值这些数据给你,根据数据来判断是…

openssl AF_ALG引擎使用

cmd AF_ALG是Linux提供的一种虚拟接口&#xff0c;用于访问内核中的加密算法。在Linux中&#xff0c;可以使用AF_ALG接口配合加密算法框架&#xff08;Crypto API&#xff09;来进行加密操作。 以下是一个使用AF_ALG和openssl进行加密操作的例子&#xff1a; # 加密 openssl…

我的编程之路:从非计算机专业到Java开发工程师的成长之路 | 学习路线 | Java | 零基础 | 学习资源 | 自学

小伙伴们好&#xff0c;我是「 行走的程序喵」&#xff0c;感谢您阅读本文&#xff0c;欢迎三连~ &#x1f63b; 【Java基础】专栏&#xff0c;Java基础知识全面详解&#xff1a;&#x1f449;点击直达 &#x1f431; 【Mybatis框架】专栏&#xff0c;入门到基于XML的配置、以…

Win10或Win11系统下西门子TIA博途运行时卡顿缓慢的解决办法总结

Win10或Win11系统下西门子TIA博途运行时卡顿缓慢的解决办法总结 首先,可以看下TIA PORTAL V19的安装条件: 处理器:Intel i5-8400H,2.5-4.2GHZ,4核以上+超线程技术,智能缓存; 内存:至少16GB,大型项目需要32GB 硬盘:必须SSD固态硬盘,至少50GB的可用空间 图形分辨率:1…

PostgreSQL FDW(外部表) 简介

1、FDW: 外部表 背景 提供外部数据源的透明访问机制。PostgreSQL fdw(Foreign Data Wrapper)是一种外部访问接口,可以在PG数据库中创建外部表,用户访问的时候与访问本地表的方法一样,支持增删改查。 而数据则是存储在外部,外部可以是一个远程的pg数据库或者其他数据库(…

LVS负载均衡-DR模式配置

LVS&#xff1a;Linux virtual server ,即Linux虚拟服务器 LVS自身是一个负载均衡器&#xff08;Director&#xff09;&#xff0c;不直接处理请求&#xff0c;而是将请求转发至位于它后端的真实服务器real server上。 LVS是四层&#xff08;传输层 tcp/udp&#xff09;负载均衡…

数据结构——二叉搜索树详解

一、二叉搜索树定义 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 1.非空左子树上所有节点的值都小于根节点的值。 2.非空右子树上所有节点的值都大于根节点的值。 3.左右子树也都为二叉搜索树。 如下图所示&#xff1a…

振弦采集仪在预防地质灾害监测中的作用与应用前景

振弦采集仪在预防地质灾害监测中的作用与应用前景 振弦采集仪&#xff08;String Vibrating Sensor&#xff0c;简称SVM&#xff09;是一种用于地质灾害监测的重要仪器&#xff0c;它通过测量地面振动信号来预测和预警地质灾害的发生。SVM的作用在于提供实时、准确的地质灾害监…

vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程

文章目录 效果展示template代码script代码样式代码 效果展示 template代码 <template><el-container class"home"><el-aside class"flex" :style"{ width: asideDisplay ? 70px : 290px }"><div class"aside-left&q…

深度学习语义分割篇——DeepLabV1原理详解篇

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

数据库是怎么做到事务回滚的呢?

数据库实现事务回滚的原理涉及到数据库管理系统&#xff08;DBMS&#xff09;如何维护事务的一致性和持久性。 基本原理&#xff1a; ACID属性&#xff1a;事务的原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Iso…

【Linux】从零开始认识进程 — 中下篇

送给大家一句话&#xff1a; 人一切的痛苦&#xff0c;本质上都是对自己无能的愤怒。而自律&#xff0c;恰恰是解决人生痛苦的根本途径。—— 王小波 从零认识进程 1 进程优先级1.1 什么是优先级1.2 为什么要有优先级1.3 Linux优先级的特点 && 查看方式1.4 其他概念 2…