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;
    else
        cout << ans << endl;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

h5 tailwind 使用rounded类导致安卓端样式显示有问题

问题&#xff1a; h5 页面使用了tailwindcss插件&#xff0c;运用了rounded 类&#xff0c;发现在ios和安卓上显示不一致&#xff0c;安卓上样式乱了 解决方案&#xff1a; 将默认得rem单位&#xff0c;改为px的单位 原理&#xff1a; 由于tailwindcss里面的默认元素的默认的…

城市内涝治理新突破:慧天【HTWATER】软件,实现城市内涝一维二维耦合模拟

​慧天排水数字化分析平台针对城市排水系统基础设施数据管理的需求&#xff0c;以及水文、水力及水质模拟对数据的需求&#xff0c;实现了以数据库方式对相应数据的存储。可以对分流制排水系统及合流制排水系统进行地表水文、管网水力、水质过程的模拟计算。可以对城市低影响开…

超好用的快捷回复软件

随着直播经济和短视频平台的兴起&#xff0c;品牌营销阵地不再局限于传统的电商巨头——淘宝、天猫、京东和拼多多&#xff0c;越来越多的品牌正积极布局快手、抖音等新晋电商平台&#xff0c;同步打造社群矩阵以拓宽产品推广渠道。这种多维度的市场渗透策略有力地提升了品牌的…

腾讯云2核4G的云服务器性能咋样?支持多少人?

腾讯云轻量应用服务器2核4G5M配置性能测评&#xff0c;腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;并发数10&#xff0c;支持每天5000IP人数访问&#xff0c;腾讯云百科txybk.com整理2核4G服务器支持多少人同时在线&#xff1f;并发数测试、CPU性能、内存性能、…

爬虫基础训练题

1.抓取imooc网站实战课程部分的课程名称&#xff08;所有课程大概7页&#xff0c;抓取1到5页&#xff09;&#xff0c;并把所有课程名称存储为txt文件第一页地址 2.设置一个请求头&#xff08;headers&#xff09;&#xff0c;这是一个字典&#xff0c;用于在HTTP请求中设置请…

Floyd算法:浅显外表下的动态规划内核

很久没遇到Floyd算法的题目了&#xff0c;2642. 设计可以求最短路径的图类刚好是一个典型。在实现核心算法之余&#xff0c;顺便整理一下算法的内核。 Floyd-Warshall’s Algorithm Floyd-Warshall算法&#xff0c;简称Floyd算法&#xff0c;是“有向图非负权图的多源最短路”…

第十届统计建模大赛 ——大数据与人工智能时代的统计研究数据解析

统计建模一般做法&#xff1a;可以采用统计分析方法&#xff0c;先进性数据预处理&#xff0c;再利用深度学习、神经网路方法进行预测。 1.碳排放预测&#xff1a;数据加代码 2.新能源汽车数据 3.太阳辐射数据 4.参考文献 请联系 建模忠哥小师妹

JavaScript 打印教程(第二部分)设置编码

JavaScript 打印教程&#xff08;第二部分&#xff09;设置编码 在进行文本打印时&#xff0c;尤其是涉及到中文或其他特殊字符时&#xff0c;正确的编码设置是非常重要的。不同的打印机支持不同的指令集&#xff0c;因此了解并使用适合您打印机的指令集是关键。本篇教程继续使…

【爬虫基础】第5讲 AJAX动态页面的数据获取

静态&#xff1a;访问地址栏里的数据就可以获取到想要的数据 动态&#xff1a;访问地址栏里的数据获取不到想要的数据 解决方案&#xff1a;抓包 打开浏览器的开发者工具-network-xhr,找到可以获取到数据的URL访问即可 获取url地址 代码实现&#xff1a; from urllib.request…

flask各种版本的项目,终端命令运行方式的实现

目录 写在前面 一、Flask项目的基本结构 二、使用终端命令运行Flask项目 1. 安装Flask 2. 创建Flask应用 3. 配置FLASK_APP环境变量 4. 运行Flask应用 5. 访问Flask应用 三、Flask CLI的其他功能 1. 创建Flask应用 2. 运行开发服务器 3. 清理缓存文件 4. 运行单元…

Spring6 (1)

Spring 1、简介&#xff1a;2、第一个程序2、set注入2.1 简单数据类型2.2测试2.3 注入Properties2.4 p命名空间注入2.5 c命名空间注入2.6 util注入2.6 引入外部配置文件 1、简介&#xff1a; 自己的理解&#xff1a;spring其实就是一个容器&#xff0c;也可以说是一个框架&…

Codeforces Round 936 (Div. 2) ---- E. Girl Permutation ---- 题解 (数论)

E. Girl Permutation&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 先理解什么是前缀最大值&#xff0c;他应该满足什么条件&#xff0c;根据定义可知对于 i 如果满足 所以 j < i&#xff0c;并且有 ai > aj&#xff0c;那么ai就是前缀最大值&#xff0c; 换…

大数据技术之 Apache Doris(一)

第 1 章 Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018 年贡献到 Apache 社区后&#xff0c;更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过 200 个产品线在使用&#xff0c;部署机器超过 10…

MySQL使用教程:数据库、表操作

目录 1. 免密码登录MySQL1.1 免密码配置1.2 登录选项介绍 2. MySQL基础配置&#xff1a;my.cnf3. 开机自启动设置&#xff08;可选设置&#xff09;4. 查看存储引擎5. 查看系统的编码规则和校验规则6. 数据库的操作6.1 查看数据库6.2 创建数据库 create database6.3 删除数据库…

九州金榜|面对校园霸凌,家长应该如何教育?

近期关于校园霸凌事件接连发生&#xff0c;前有邯郸时间&#xff0c;后有福建晋江一中学生因不忍被霸凌&#xff0c;选择跳楼轻生&#xff0c;面对此类事件&#xff0c;接连发生&#xff0c;孩子为什么会成为被霸凌的对象&#xff1f;家长应该如何教育孩子敢于对霸凌时说不。下…

【Java程序设计】【C00374】基于(JavaWeb)Springboot的社区疫情管理系统(有论文)

TOC 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客中有上百套程序可供参考&#xff0c;欢迎共同交流学习。 项目简介 项目获取 &#x1f345;文末点击卡片…

Java Web-Tomcat

Web服务器 Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”。 Tomcat&#xff0c;是一个 HTTP 服务器。我们只需要在服务器中安装一个Web服务器如Tomcat&#xff0c;然后就可以将…

js逆向之对称加密west交大登录密码

目录 js逆向之对称加密&west交大登录密码 什么是DES? 什么是AES? 实例演示--某大学官网 找加密? 关键字搜索 第一处: 找到其加密码代码 下断点 扣代码 这js代码怎么运行呢? 如何使用node运行js代码? 下载这个加密算法对象库 引用(对象) 传参 联动pyth…

Rancher介绍

1.什么是Rancher Rancher是一套容器管理平台&#xff0c;专门用于部署和管理容器化应用。以下是关于Rancher的详细介绍&#xff1a; 容器编排与管理&#xff1a;Rancher是一个开源的企业级容器管理平台&#xff0c;它支持Kubernetes作为其容器编排引擎。Rancher可以帮助用户在…