区间类贪心,蓝桥云课 打折

news2024/11/18 0:30:55

目录

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解


一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

0打折 - 蓝桥云课 (lanqiao.cn)


二、解题报告

1、思路分析

思路很简单,按照时间顺序遍历,计算该天购买所有商品的总价格然后维护最小值

我们考虑对于一件物品在[l, r]内打折,等价于在第l天开始打折,第r+1天结束打折

那么我们可以用结构体存储如下信息:第 i 天,商品a调整价格为b

用平衡树维护每个商品当前有效价格集合

然后对于[l, r] 打折的商品<a, b>我们存两个结构体

第l天,商品a调整价格为b * p * / 100

第r + 1天,商品a 调整价格为 -1 - b * p * / 100

第一个很好理解,第二个并非是真的这样,而是我们遍历到该信息后得知商品a之前的价格没用了,我们用-1减去结构体内的价格就能得到之前的价格,我们从商品a的价格集合中删去即可

读入信息后,将结构体按时间升序排序,顺序遍历,每次处理一天内的所有信息

然后维护最小值即可

注意multiset如果erase(key)会将key都删掉,如果是erase(st.find(key))只会删除一个

2、复杂度

时间复杂度: O(nlogn)空间复杂度:O(n)

3、代码详解

#include <bits/stdc++.h>
using i64 = long long;
using PII = std::pair<int, int>;
const int N = 1e5 + 10, M = 8e5 + 10;

int n, m, tot;

struct node {
    int s, w, id;
    bool operator < (const node& x) const {
        return s < x.s;
    }
} q[M];

std::multiset<int> st[N];

int main () {
    std::cin >> n >> m;
    std::vector<int> w(n + 1, 1e9);
    for (int i = 0, s, t, p, c; i < m; i ++ ) {
        std::cin >> s >> t >> p >> c;
        for (int j = 0, a, b; j < c; j ++ ) {
            std::cin >> a >> b;
            w[a] = std::min(w[a], b);
            int x = 1LL * b * p / 100;
            q[tot ++] = { s, x, a };
            q[tot ++] = { t + 1, -x - 1, a };
        }
    }

    for (int i = 1; i <= n; i ++ ) st[i].insert(w[i]);
    

    std::sort(q, q + tot);

    i64 ans = std::accumulate(w.begin() + 1, w.end(), 0LL);

    i64 s = ans;
    

    for (int i = 0; i < tot;  ) {
        int t = q[i].s;
        while (i < tot && q[i].s == t) {

            s -= *st[q[i].id].begin();
            if (q[i].w < 0)
                st[q[i].id].erase(st[q[i].id].find(-1 - q[i].w));
            else 
                st[q[i].id].insert(q[i].w); 
            s += *st[q[i].id].begin();

            i ++;
        }
        ans = std::min(ans, s);
    }

    std::cout << ans;
    return 0;
}

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

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

相关文章

Kubernetes(k8s) 实战集群部署Discuz x3.5 k8s使用本地私有仓库镜像 Centos 8.5 安装部署NFS

本文环境可参考: 详细教程 Centos8.5 基于 k8s v1.30.1 部署高可用集群 kubeadm 安装 kubernetes v1.30.1 docker集群搭建 延长证书有效期-CSDN博客 1 集群部署&#xff0c;需要PV&#xff0c;安装NFS #master11,slave12,slave13都安装 yum install nfs-utils rpcbind -y2 …

httphere是一个反向代理和友好前端开发的小工具

httphere 是干什么的 httphere在任意目录启动 http服务, 不仅仅是启动一个简单的http服务。 只启动http服务&#xff0c;现成的做法有&#xff1a; python2 -m SimpleHTTPServer python3 -m http.server 其他 httphere 工具httphere功能有&#xff1a;静态服器、文件上传与下…

IDEA社区版创建并运行maven管理的web项目的基本流程

一、前言 注意&#xff0c;这是社区版&#xff0c;旗舰版可以绕路。 二、过程 1、下载安装社区版 2、安装jdk&#xff0c;tomcat&#xff0c;maven 3、创建并启动项目 注意选择的骨架是maven-archetype-webapp&#xff0c;然后next&#xff0c;设置项目名&#xff0c;存放…

vivado设置Vscode为默认编辑器

D:\vscode\Microsoft VS Code\Code.exe -g [file name]:[line number]

机器学习知识与心得

目录 机器学习实践 机器学习基础理论和概念 机器学习基本方法 1.线性回归&#xff08;回归算法&#xff09; 训练集&#xff08;Training Set&#xff09; 测试集&#xff08;Test Set&#xff09; 交叉验证 正则化 特点 2.logistic回归&#xff08;分类算法&#xf…

【面试八股总结】索引(二):B+树数据结构、索引使用场景、索引优化、索引失效

参考资料&#xff1a;小林coding、阿秀 一、为什么InnoDB采用B树作为索引数据结构&#xff1f; B 树是一个自平衡多路搜索树&#xff0c;每一个节点最多可以包括 M 个子节点&#xff0c;M 称为 B 树的阶&#xff0c;所以 B 树就是一个多叉树。 B 树与 B 树的差异&#xff1a;…

数据分析必备:一步步教你如何用Pandas做数据分析(10)

1、Pandas 文本处理 Pandas 文本处理操作实例 在本章中&#xff0c;我们将使用基本的Series / Index讨论字符串操作。在随后的章节中&#xff0c;我们将学习如何在DataFrame上应用这些字符串函数。 Pandas提供了一组字符串函数&#xff0c;可以轻松地对字符串数据进行操作。最…

海信集团携纷享销客启动LTC数字化落地 推动ToB业务再升级

日前&#xff0c;海信集团携手连接型CRM纷享销客正式启动LTC&#xff08;Leads to Cash&#xff09;数字化平台实施落地项目。作为海信集团数字化的重要里程碑&#xff0c;该项目将通过统一规划、统一投资、统一平台、资源共享和数据赋能&#xff0c;构建ToB业务数字化经营管理…

System32文件夹千万不能删除,看完这篇你就知道为什么了

序言 C:\Windows\System32目录是Windows操作系统的关键部分,重要的系统文件存储在该目录中。网上的一些恶作剧者可能会告诉你删除它,但你不应该尝试去操作,如果你尝试的话,我们会告诉你会发生什么。 什么是System32文件夹 位于C:\Windows\System32的System32文件夹是所有…

【高阶数据结构】 B树 -- 详解

一、常见的搜索结构 适合做内查找&#xff1a; 以上结构适合用于数据量相对不是很大&#xff0c;能够一次性存放在内存中&#xff0c;进行数据查找的场景。如果数据量很大&#xff0c;比如有 100G 数据&#xff0c;无法一次放进内存中&#xff0c;那就只能放在磁盘上了。 如果…

【C++】数据结构:哈希桶

哈希桶&#xff08;Hash Bucket&#xff09;是哈希表&#xff08;Hash Table&#xff09;实现中的一种数据结构&#xff0c;用于解决哈希冲突问题。哈希表是一种非常高效的数据结构&#xff0c;它通过一个特定的函数&#xff08;哈希函数&#xff09;将输入数据&#xff08;通常…

aws eks中cwagent收集性能日志的理解

参考资料 CloudWatch代理配置参考Prometheus的CloudWatch代理配置 本文旨在明确以下几个问题 eks的container insight addon包括哪些组件&#xff1f;分别起什么作用&#xff1f;eks的cwagent的指标获取具体包括那些部分&#xff1f;数据源是什么&#xff1f;eks的cwagent如…

【NumPy】全面解析NumPy的where函数:高效条件操作指南

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

5-26作业

网络聊天室 服务器&#xff1a; 1 #include <myhead.h>2 int main(int argc, const char *argv[])3 {4 if(argc!3)5 {6 printf("请输入IP和端口号\n");7 return -1;8 }9 int sfd socket(AF_INET, SOCK_DGRAM, 0);10 if(…

汇编:循环结构

16位汇编语言中的循环结构主要通过条件跳转指令&#xff08;如LOOP、JMP, JE, JNE, JG, JL, 等&#xff09;来实现&#xff0c;常见的循环类型包括for循环和while循环&#xff1b; Loop指令 LOOP指令的操作非常简单&#xff1a;它将CX寄存器的值减1&#xff0c;如果结果不为零…

代码随想录算法训练营day21|530.二叉搜索树的最小绝对值差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

二叉搜索树的最小绝对值差 递归法 首先需考虑这是一个二叉搜索树&#xff0c;在中序遍历后的结果为从小到大的一个序列&#xff0c;寻找二叉搜索树的最小绝对值差&#xff0c;只需比较一个节点与之后的差值即可。在遍历的过程中&#xff0c;我们需要一个节点保存前节点…

[Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件

如下&#xff0c;我们有一个platform.pk8和platform.x509.pem。为了打包&#xff0c;需要将私钥&#xff08;.pk8&#xff09;和公钥证书&#xff08;可能是.pem或.crt文件&#xff09;合并成一个PKCS#12 格式的密钥库文件 1.准备你的私钥和证书文件 确保你有以下两个文件&…

【论文阅读】xLSTM: Extended Long Short-Term Memory

xLSTM: Extended Long Short-Term Memory 引用&#xff1a; Beck M, Pppel K, Spanring M, et al. xLSTM: Extended Long Short-Term Memory[J]. arXiv preprint arXiv:2405.04517, 2024. 论文链接&#xff1a; [2405.04517] xLSTM: Extended Long Short-Term Memory (arxiv.…

Nocobase快速上手 -第一个collection

本文记录Nocobase中如何创建collection&#xff0c;以及如何将collection展示到页面中&#xff0c;并且配置CRUD相应的操作. Collection 在NocoBase中&#xff0c;collection&#xff08;集合&#xff09;是用来组织和存储各种数据的容器&#xff0c;如订单、产品、用户、评论…

VMware中的虚拟机设置开启VT虚拟化

虚拟机系统关机打开虚拟机设置-----点击处理器----勾选虚拟化引擎---确定即可