A - Environment-Friendly Travel Gym - 102501A

news2024/9/27 19:16:17

题意:给你一些交通方式和站点,不同的交通方式碳排放不一样,问从起点到终点距离不超过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;
    else
        cout << ans << endl;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编辑图片加文字的软件有哪些?4款编辑软件推荐

编辑图片加文字的软件有哪些&#xff1f;在日常生活中&#xff0c;无论是修饰照片、制作海报&#xff0c;还是为图片添加文字&#xff0c;图片编辑软件都能轻松应对。它们操作简单&#xff0c;功能丰富&#xff0c;让我们能够随时随地展现自己的创意和个性。使用它们&#xff0…

Claude 3被玩出自我意识了?AI社区轰动,我们买会员来了次实测

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站 每天给大家更新可用的国内可用chatGPT资源​ 更多资源欢迎关注 ​ Anthropic 发布了新一代大模型系列 Claude 3&#xff0c;遥遥领先快一年之久的 GPT-4 终于迎来了强劲的对手。 ​ Claude 3 …

经典机器学习模型(九)EM算法的推导

经典机器学习模型(九)EM算法的推导 1 相关数据基础 1.1 数学期望 1.1.1 数学期望的定义 根据定义&#xff0c;我们可以求得掷骰子对应的期望&#xff1a; E ( X ) X 1 ∗ p ( X 1 ) X 2 ∗ p ( X 2 ) . . . X 6 ∗ p ( X 6 ) 1 ∗ 1 6 2 ∗ 1 6 1 ∗ 1 6 3 ∗ 1 6 …

红酒:不同类型红酒的品鉴技巧与文化传承

红酒&#xff0c;作为一种历史悠久的产品&#xff0c;不仅蕴含着深厚的文化底蕴&#xff0c;还展现了多样的风味特点。云仓酒庄雷盛红酒&#xff0c;其不同类型的产品各具特色&#xff0c;为品鉴者带来了丰富的体验。本文将带您一起探索雷盛红酒的品鉴技巧与文化传承。 品鉴红酒…

DFS:从递归去理解深度优先搜索

一、深入理解递归 二、递归vs迭代 三、深入理解搜索、回溯和剪枝 四、汉诺塔问题 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public: //笔试题&#xff0c;不讲武德&#xff0c;CAvoid move(int n,vector<int>& A, vector<int>& B, ve…

Qwen1.5的多框架部署使用指南

在当今的技术领域&#xff0c;大型语言模型的应用日益广泛&#xff0c;而Qwen1.5作为其中的佼佼者&#xff0c;已经得到了多个推理框架的支持。 原生混合精度推理 from transformers import AutoModelForCausalLM, AutoTokenizer import torch# 设置设备为CUDA&#xff0c;如果…

【Vue3】实现二维码、链接 分享功能

界面效果: 描述 要实现的功能分别是 1.复制链接可以将次链接分享给他人&#xff0c;他人依靠链接便可以打开你想要让他看到的数据 2.通过微信扫一扫&#xff0c;便可看到和链接一样的内容在手机端 需要的依赖 二维码:qrcode 复制功能:vue-clipboard3 下载二维码:html2canv…

网络编程之流式套接字

流式套接字&#xff08;SOCK_STREAM&#xff09;是一种网络编程接口&#xff0c;它提供了一种面向连接的、可靠的、无差错和无重复的数据传输服务。这种服务保证了数据按照发送的顺序被接收&#xff0c;使得数据传输具有高度的稳定性和正确性。通常用于那些对数据的顺序和完整性…

ES5和ES6的深拷贝问题

深拷贝我们知道是引用值的一个问题&#xff0c;因为在拷贝的时候&#xff0c;拷贝的是在内存中同一个引用。所以当其中的一个应用值发生改变的时候&#xff0c;其他的同一个引用值也会发生变化。那么针对于这种情况&#xff0c;我们需要进行深度拷贝&#xff0c;这样就可以做到…

Linux下javaweb项目部署

javaweb项目部署测试 测试环境&#xff1a;centos7 下载安装jdk rpm -ivh jdk-8u131-linux-x64.rpm 下载安装MySQL wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-server-5.7.33-1.el7.x86_64.rpm https://downloads.mysql.com/archives/get/p…

Docker部署一个SpringBoot项目(超级详细)

注意&#xff1a;下面的教程主要是针对 Centos7 的&#xff0c;如果使用的其他发行版会有细微的差别&#xff0c;请查看官方文档。 Docker部署一个SpringBoot项目&#xff08;超级详细&#xff09; 一、安装Docker1.卸载旧版2.配置Docker的yum库3.安装Docker4.设置开机自启动5.…

前端实现浏览器自定义滚动条

前言&#xff1a; 最近有个项目&#xff0c;产品觉得浏览器默认滚动条太丑了。想美化一下&#xff0c;比如自定义颜色&#xff0c;加上圆角&#xff0c;宽高都要更改一下。我查了资料和文档总结了一下 写法&#xff0c;特此记录以便之后使用。 浏览器滚动条api 总结&#xff…

2024年了,为何 Selenium 依然这么火?

今天给大家带来的主题是自动化测试框架Selenium&#xff0c;话不多说&#xff0c;直接开始&#xff01; 1.什么是 Selenium 自动化测试 Jason Huggins 于 2004 年创建了一个 JavaScript 框架&#xff0c;旨在将其从重复的手动测试中解放出来。 最初命名为 JavaScriptTestRunn…

基于SpringCloud+Hadoop+Vue实现的企业级网盘系统实现

编程语言&#xff1a;Java、Mybatis、Spring、SpringBoot、SpringCloud、Node、Vue 开发环境&#xff1a;Windows 10 Mysql 开发工具&#xff1a;WebStorm、IDEA编译器、Git、Maven 应用部署服务器&#xff1a;SpringBoot内置Tomcat插件 Node服务器&#xff1a;Node v10.1…

【吊打面试官系列】Redis篇 -Redis 集群如何选择数据库?

大家好&#xff0c;我是锋哥。今天分享关于 【Redis 集群如何选择数据库&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Redis 集群如何选择数据库&#xff1f; Redis 集群目前无法做数据库选择&#xff0c;默认在 0 数据库。 Redis 集群不支持使用 SELECT 命令…

RF-TI1352P2—双频多协议高发射功率无线模块

RF-TI1352P2是一款基于TI CC1352P7为核心的双频&#xff08;Sub-1 GHz 和 2.4 GHz&#xff09;多协议高发射功率&#xff08;20 dBm&#xff09;无线模块&#xff1b;支持IPEX接口和邮票孔两种天线形式&#xff1b;模块除了集成负责应用逻辑的高性能 48 MHz ARM Cortex-M4F 主处…

实验02-1 C#和ASP.NET控件:在Web窗体中输出九九乘法表

【实验内容及要求】 1. 在Web窗体中输出九九乘法表 浏览效果如图2-1所示。 图2-1 在Default.aspx.cs中编写C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;public par…

什么是通配符SSL证书?

在当前互联网环境中&#xff0c;数据传输安全至关重要&#xff0c;而通配符SSL证书作为保护多个子域名的理想工具&#xff0c;因其灵活、经济高效的特性而备受瞩目。本文将详细介绍通配符SSL证书的定义、主要特性及其价格区间。 通配符SSL证书的核心特性概述如下&#xff1a; …

【python】flask模板渲染引擎Jinja2中的模板继承,简化前端模块化开发

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

霉霉说地道中文,口型、卡点几乎完美,网友:配音时代结束了?

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站 每天给大家更新可用的国内可用chatGPT资源 更多资源欢迎关注 「给电影配音的时代即将结束了。」 AI 的发展让很多人直呼饭碗被抢了&#xff0c;以前是艺术家、程序员…… 现在配音员也要失业了&a…