【创造一个源点去建图】【有等级限制的dijkstra(采用多次dijk方法处理)】昂贵的聘礼

news2024/11/24 14:33:12

昂贵的聘礼

        • 题意分析

原题链接

在这里插入图片描述

题意分析

本题需要注意:

  1. 等级限制比较复杂,可以最后考虑
  2. 本题说 由 B物品 可以换 A物品,想到了B节点可以走到A节点,所以构建图
  3. 由于我们是要买一个点再开始换的,所以我们可以构建一个源点,指向所有物品,表示直接购买该物品

所以样例构图如下

在这里插入图片描述
我们从0点开始dij,
得到dist数组,表示所有点到1节点的最短距离
那么dist[i]就表示最小花费了

问题还有一个就是:
等级制度怎么考虑?

首先我们必须买
大于首长等级-m的物品

那么出现一个问题就是

2 - 3 - 6 -5
2 - 4 - 5
现在比如 2 到 5
有这么两条路(2比3更便宜)

但是 2 不能 到 6

所以只能走 2 - 4 - 5

但是其实 3 - 6 - 5 总花费最小

所以只能多次dij

每次限制 等级区间

由于 1的等级是N
1是允许 N-m到N+m区间的

那么我们就从
N-m开始 每次是 N-m+m区间 逐渐+1
这样保证每次的路线都是合法的
然后多次dij取最小值即可

#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 110, INF = 0x3f3f3f3f;

int n, m;
int w[N][N], level[N];
int dist[N];
bool st[N];

int dijkstra(int down, int up)
{
    memset(dist, 0x3f, sizeof dist);
    memset(st, 0, sizeof st);

    dist[0] = 0;
    for (int i = 1; i <= n + 1; i ++ )
    {
        int t = -1;
        for (int j = 0; j <= n; j ++ )
            if (!st[j] && (t == -1 || dist[t] > dist[j]))
                 t = j;

        st[t] = true;
        for (int j = 1; j <= n; j ++ )
            if (level[j] >= down && level[j] <= up)
                dist[j] = min(dist[j], dist[t] + w[t][j]);
    }

    return dist[1];
}

int main()
{
    cin >> m >> n;

    memset(w, 0x3f, sizeof w);
    for (int i = 1; i <= n; i ++ ) w[i][i] = 0;

    for (int i = 1; i <= n; i ++ )
    {
        int price, cnt;
        cin >> price >> level[i] >> cnt;
        w[0][i] = min(price, w[0][i]);
        while (cnt -- )
        {
            int id, cost;
            cin >> id >> cost;
            w[id][i] = min(w[id][i], cost);
        }
    }

    int res = INF;
    for (int i = level[1] - m; i <= level[1]; i ++ ) res = min(res, dijkstra(i, i + m));

    cout << res << endl;

    return 0;
}

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

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

相关文章

bird 2023 比赛总结

1. 引言 &#x1f4cc; 参加这场比赛的时间&#xff0c;应该是还剩一个月不到了&#xff0c;本来没啥想法&#xff0c;因为在忙一些其它的比赛或者是工作和个人上的烦心事&#xff0c;不过在看过了赛题分析后&#xff0c;整体给我感观是一道挺有意思的学习赛&#xff0c;不仅仅…

ESP32-CAM开发板 使用 sqlite3 数据库存储数据记录

忘记过去&#xff0c;超越自己 ❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-05-29 ❤️❤️ 本篇更新记录 2023-05-29 ❤️&#x1f389; 欢迎关注 &#x1f50e;点赞 &#x1f44d;收藏 ⭐️留言&#x1f4dd;&#x1f64…

Python - Pycharm 配置 autopep8 并设置快捷键

什么是 PEP8 官方&#xff1a;PEP 8 – Style Guide for Python Code | peps.python.org 中文翻译博客&#xff1a;https://www.cnblogs.com/ajianbeyourself/p/4377933.html PEP8 是 Python 官方推出的一套编码的规范&#xff0c;只要代码不符合它的规范&#xff0c;就会有…

iOS unable to find utility “pngcrush“, not a developer tool or in PATH

0x00 奇怪的Bug 很奇怪&#xff0c;还很蛋疼 T_T 前一秒还能 Build 成功&#xff0c;运行 后一秒直接 GG sh -c /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/S…

Win10系统更新时不小心中断了无法启动怎么办?

Win10系统更新时不小心中断了无法启动怎么办&#xff1f;有用户使用的Win10系统电脑在进行系统更新的时候&#xff0c;被自己误触了电脑导致更新进程中断了。那么遇到这样的情况我们怎么去进行问题的解决呢&#xff1f;接下来我们一起来看看以下的解决方法吧。 准备工作&#x…

flink写mysql报错Could not retrieve transation read-only status server

事务隔离级别前提下还是报错 SET GLOBAL tx_isolationREAD-COMMITTED; show global variables like wait timeout; 发现mysql是8小时。如果flnk超过8小时没有发送数据&#xff0c;invoke将会导致 mysql主动断开连接&#xff0c;而java侧并无感知。 解决问题&#xff0c;在使…

Benewake(北醒) TFmini-i-485/TF02-i-485/TF03-485 雷达Modbus协议在Python Tkinter模块上实现功能配置的GUI设计

目录 实验目的测试环境Python库需求Benewake(北醒) TF雷达接线示意图库安装说明例程运行展示 实验目的 实现485接口系列雷达Modbus协议在Python下Tkinter模块实现功能配置的GUI设计。 本例程主要功能如下&#xff1a; 1.设备连接&#xff08;已知雷达设备的波特率和站号&#…

C++11 auto类型推导

1.类型推导 C11引入了auto 和 decltype 关键字实现类型推导&#xff0c;通过这两个关键字不仅能方便地获取复杂的类型&#xff0c;而且还能简化书写&#xff0c;提高编码效率。 auto 类型推导的语法和规则 在之前的 C 版本中&#xff0c;auto 关键字用来指明变量的存储类型…

SSL/TLS协议核心原理解析与实战

什么是SSL/TLS SSL&#xff08;secure sockets layer&#xff0c;安全套接层&#xff09;安全传输技术。TCP是传输层的协议&#xff0c;但是它是明文传输的&#xff0c;是不安全的。SSL的诞生给TCP加了一层保险&#xff0c;为TCP通信提供安全及数据完整性保护。TLS只是SSL的升…

软件测试银行金融项目如何测?看看资深测试老鸟的总结,一篇足够...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试&#x…

如何获取ios打包证书

要获取ios证书&#xff0c;需要去苹果开发者中心注册苹果开发者账号&#xff0c;百度苹果开发者中心即可进入苹果开发者中心官网。 假如你还从来没注册过苹果开发者&#xff0c;你可以参考下面这篇文章先注册成为苹果开发者&#xff0c;必须要有苹果开发者账号才能生成ios打包…

电商客户消费预测模型-基于数千万真实在线零售数据__企业调研_论文科研_毕业设计

之前发过 《谁主沉浮&#xff1f;银行&#xff0c;消金&#xff0c;互联网公司的精准营销_智慧营销完全解读》介绍了智慧营销/精准营销目的是降低运营成本。但精准营销可以带来很多额外收益&#xff0c;例如提高销售利润&#xff0c;提高客户忠诚度&#xff0c;降低客户流失率&…

MySQL的登录与退出(图文讲解)

MySQL的登录 前言一、服务的启动与停止1、方式1&#xff1a;使用图形界面工具2、方式2&#xff1a;使用命令行工具 二、自带客户端的登录与退出1、登录方式1&#xff1a;MySQL自带客户端2、登录方式2&#xff1a;windows命令行3、退出登录 前言 本博主将用CSDN记录软件开发求学…

越秀地产K2流程平台年度报告出炉,来看看“别人家”的流程平台

前不久&#xff0c;越秀地产K2流程平台2022年度运营报告新鲜出炉&#xff0c;K2流程平台再次递交出色成绩单。 2022年&#xff0c;越秀地产在K2流程平台上审批完成的流程共计103万条&#xff0c;日均发起流程数达2800条&#xff0c;日均点击量5万。在大体量、高负荷情形下&…

moment获取指定日期的周x,某月最后一天

安装了moment插件的情况下&#xff0c;使用moment处理时间&#xff0c;原生的Date对象是另一回事。 非官方中文网-文档 1 当前时间 moment() 2 格式化时间 YYYY/yyyy 四位数年份 MM 两位数月份 DD 两位数天 moment().format("YYYY MM DD") 2023 05 26 moment().…

某二手车逆向研究,竟然如此……

目录 一、逆向目标二、网站分析三、加密参数分析四、加密数据分析五、思路总结六、完整项目下载七、作者Info 一、逆向目标 通过抓包技术找出请求头的加密参数&#xff0c;当然也包括cookie&#xff0c;以及响应数据中的加密过的或编码过的数据&#xff0c;通过xhr/fetch请求定…

lidar-camera 标定系统

摘要 本文讨论了一个视觉系统的校准问题&#xff0c;该系统由RGB相机和3D光学雷达&#xff08;LiDAR&#xff09;传感器组成。将来自不同模态的两个独立点云进行配准始终是具有挑战性的。我们提出了一种新颖、准确的校准方法&#xff0c;使用已知尺寸的简单纸板箱。我们的方法…

Apache网页安全与安全优化--网页缓存、隐藏版本信息、Apache 防盗链

目录 --------网页缓存-------- 1.检查是否安装 mod_expires 模块 2.如果没有安装mod_expires 模块&#xff0c;重新编译安装 Apache 添加 mod_expires模块 3.配置 mod_expires 模块启用 4.检查安装情况&#xff0c;启动服务 5.测试缓存是否生效 --------隐藏版本信息--…

公开报名|CCPTP云渗透测试认证专家第二期培训班,将在云网基础设施安全国家工程研究中心举办

CCPTP云渗透测试认证专家由云安全联盟大中华区发布&#xff0c;是全球首个云渗透测试能力培养课程及人才培养认证&#xff0c;弥补了国内云渗透测试认知的差距和技能型人才培养的空白。4月1日-13日&#xff0c;CCPTP 首期班成功举办&#xff0c;于2023年5月10日部分学员完成考试…

C语言---函数

1、函数是什么 学习库函数网站&#xff1a; https://cplusplus.com/reference/http://en.cppreference.comhttp://zh.cppreference.com 我们参考文档&#xff0c;学习几个库函数 2、库函数 3、自定义函数 自定义函数和库函数一样&#xff0c;有函数名&#xff0c;返回值类…