P2672 [NOIP2015 普及组] 推销员

P2672 [NOIP2015 普及组] 推销员

难度: 提高+/省选-

考点:贪心、前缀和

题意

n n n 个住户,小明每走一米消耗 1 1 1 疲劳,第 i i i 个住户距离起点 S i S_i Si 米,同时走进住户沟通会累积 A i A_i Ai 疲劳。问如何在不走多余的路前提下,他 最多可以累积 多少点疲劳值?

分析

n ≤ 1 0 5 n \le 10^5 n105 考虑贪心和 DP。

​ 而关联到疲劳值消耗最大,应该要从 ∑ A \sum A A 2 S 2S 2S 来考虑,假设选择了 x x x 名住户,分别代表所选择的 x x x 个住户的情况下,沟通带来的疲劳值之和 ∑ A \sum A A,以及所选择住户中最远的住户距离 S S S 有关。

​ 想让所选择的 x x x 个住户的情况下消耗最大,其中距离 S 、 A S、A SA 都是固定的,那么应该要让 x − 1 x-1 x1 个住户的消耗最大。

​ 假设我们选择了最大的 A i A_i Ai x x x 名的顾客, A 1 , A 2 , . . . , A x A_1,A_2,...,A_x A1,A2,...,Ax,其中距离来看 S 1 < . . . < S x − 1 < S x S_1<...<S_{x-1}<S_x S1<...<Sx1<Sx,假设我们换成了 k k k 个最大的 A i A_i Ai A 1 , A 2 , . . . , A k A_1,A_2,...,A_k A1,A2,...,Ak,其中距离来看 S 1 < . . . < S k − 1 < S k S_1<...<S_{k-1}<S_{k} S1<...<Sk1<Sk。已经知道 1 ∼ x 1 \sim x 1x 个顾客是前 x x x 个大的 A i A_i Ai,那么替换的 k k k 个只能是在这 x x x 里面去取,如果替换的 k k k 个中最大的距离是 S k S_k Sk 那么 S k ≤ S x S_k \le S_x SkSx,所以选择的前 x x x 大的 A i A_i Ai 答案不会更劣。如下图为 S x S_x Sx 为最远端所选择的住户位置:

在这里插入图片描述

​ 那么服务的住户肯定是选择的前 x x x 大的位置,其他选择的位置也不会是最优解。

​ 计算贡献: ∑ A + 2 S \sum A + 2S A+2S 中可能会出现两种选择的情况,选择的 A A A 较大或者 S S S 较远的住户都有可能,因为任意一种只要 足够大/远 就可以影响选择的可能性。

本题的核心性质

x x x 家住户推销产品的最大话费只有两种情况:推销给 A i A_i Ai 最大的 x x x 家;或者推销给 A i A_i Ai 最大的 x − 1 x-1 x1 家,然后最后一家尽可能远。

​ 因此可以先讲所有住户按 A i A_i Ai 从大到小排序,利用前缀和思想与处理出三个数组:

  • f[i] 表示前 i i i A i A_i Ai 的和;
  • g[i] 表示前 i i i 个 S_i 的最大值;
  • h[i] 表示 i ∼ n i \sim n in 2 S i + A i 2S_i + A_i 2Si+Ai 的最大值;

​ 那么向 x 家住户推销产品的最大话费就是下面两种情况的最大值:

  • 推销给 A i A_i Ai 最大的 x x x 家:f[i] + 2 * g[i]
  • 推销给 A i A_i Ai 最大的 x − 1 x-1 x1 家,然后最后一家尽可能远:f[i-1] + h[i]

时间复杂度

​ 预处理前缀和数组求每个 x x x 对应的最大话费都是线性的,再加上排序,总时间复杂度是 O ( n l o g n ) O(nlogn) O(nlogn)

参考代码

#include <bits/stdc++.h>
#define ll long long
#define PII std::pair<int, int>const int N = 1e5 + 10;
int f[N], g[N], h[N], n;
PII p[N];int main()
{std::ios::sync_with_stdio(false), std::cin.tie(nullptr);std::cin >> n;for (int i = 1; i <= n; i++)std::cin >> p[i].second; // si 距离for (int i = 1; i <= n; i++)std::cin >> p[i].first; // ai 疲劳值// 贪心策略:按照疲劳值从大到小排序sort(p + 1, p + 1 + n, std::greater<PII>());// 扫一遍,维护前 i 大的住户信息 ::: f[i]: 前 1~i 的 sum(Ai) , g[i]: 前 1~i 中最远的 max(Si)for (int i = 1; i <= n; i++){f[i] = f[i - 1] + p[i].first;g[i] = std::max(g[i - 1], p[i].second);}// 贪心策略2:贪心维护,i 位置上,靠后的住户的最大贡献值 h[i] : ( Sum(Ai) + 2Si)for (int i = n; i; i--)h[i] = std::max(h[i + 1], p[i].first + p[i].second * 2);// 比较两种情况// 情况一:直接选择最大的 x 名住户。// 情况二:去掉第 i 位住户( A 最小贡献),取前 1~i-1 个住户(最大疲劳和) sum(A(i-1)) + 贪心(后面的某位较大的贡献)的住户 Ai+2Si。for (int i = 1; i <= n; i++)std::cout << std::max(f[i] + g[i] * 2, f[i - 1] + h[i]) << "\n";return 0;
}

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

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

相关文章

软件工程技术专业在物联网应用开发中的关键技术与挑战

引言 物联网技术的蓬勃发展与广泛普及&#xff0c;极大地丰富了人们的日常生活&#xff0c;催生了诸如智能家居、智能交通、智能健康等一系列创新应用&#xff0c;为用户提供了更加智能化、个性化的服务体验。然而&#xff0c;物联网应用开发也随之迎来了诸多挑战&#xff0c;…

基于Multisim光控夜灯LED电路带计时功能(含仿真和报告)

【全套资料.zip】光控夜灯LED电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 光控夜灯LED电路 1.采用纯数字电路&#xff0c;非单片机。 2.通过检测周围光线&#xff0c;光线暗自…

vue 3:监听器

目录 1. 基本概念 2. 侦听数据源类型 1. 监听getter函数 2. 监听 ref 或 reactive 的引用 3. 多个来源组成的数组 4. 避免直接传递值&#xff01;&#xff01;&#xff01; 3. 深层侦听器 4. 立即回调的侦听器 5. 一次性侦听器 6. watchEffect() 7. 暂停、恢复和停止…

c 语言链表的简单使用

一、链表介绍 在 C 语言中&#xff0c;链表是一种常用的数据结构&#xff0c;用于动态地存储数据。链表中的每个元素称为节点&#xff0c;每个节点包含数据部分和指向下一个节点的指针。 1.1 链表的基本概念 定义&#xff1a;链表是一种物理存储单元上非连续、非顺序的存储结…

计算机网络——路由器构成

算路由表是分布式去算——你算你的&#xff0c;我算我的 输出队列非先来先传 调度发生在哪里 缓存队列一般是应对——来数据方向的速度过快问题

微信小程序uniapp基于Android的流浪动物管理系统 70c3u

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 以往流浪猫狗的救助网站相关信息的管理&#xff0c;都是工作人员手工统计。这种方式不但时效性低&#xff0c;而且需要查…

【Pikachu靶场:XSS系列】xss之过滤,xss之htmlspecialchars,xss之herf输出,xss之js输出通关啦

一、xss之过滤 <svg onloadalert("过关啦")> 二、xss之htmlspecialchars javascript:alert(123) 原理&#xff1a;输入测试文本为herf的属性值和内容值&#xff0c;所以转换思路直接变为js代码OK了 三、xss之href输出 JavaScript:alert(假客套) 原理&#x…

【$15000】 通过监控调试模式实现RCE

你有没有遇到过一个你直觉上知道存在漏洞的端点&#xff0c;但你却无法完全理解后端发生了什么或如何利用它&#xff1f;在这篇文章中&#xff0c;我将引导你了解一种技术&#xff0c;它将我的黑盒测试转变为半白盒测试。这种方法导致了多个漏洞的发现&#xff0c;并最终实现了…

npm镜像的常用操作

查看当前配置的 npm 镜像 npm config get registry切换官方镜像 npm config set registry https://registry.npmjs.org/切换淘宝镜像(推荐) npm config set registry https://registry.npmmirror.com/切换腾讯云镜像 npm config set registry http://mirrors.cloud.tencent…

Fake Location解除屏蔽分析

前言:对于Fake Location的appconfigs.xml文件屏蔽分析 <?xml version1.0 encodingutf-8 standaloneyes ?> <map><string name"config">{&quot;disabledApps&quot;:[&quot;com.srit.swork.views&quot;,&quot;com.sqjz&q…

3D系统开发工具HOOPS SDK如何实现PLM应用的创新与优化?

无论是支持汽车、航空航天、医疗设备还是建筑&#xff0c;产品生命周期管理(PLM)解决方案实际上都是将制造生产系统结合在一起的粘合剂&#xff0c;从头到尾提供数字线程并为最终用户优化流程。 Tech Soft 3D在行业内近30年&#xff0c;我们对领先的应用程序所基于的组件技术&…

数据结构和算法之树形结构B+树(7)

前一章节我们介绍了B树&#xff0c;了解了B树是适用于大规模数据存储和磁盘访问‌的树结构&#xff0c;而今天要讲的B是B树的一种改进&#xff0c;是B树的一种优化和改进&#xff0c;被大多数据库系统采纳作为索引结构使用。 一、基本概念 B树是B树的改进&#xff0c;因…

用 Python 爬取淘宝商品价格信息时需要注意什么?

用 Python 爬取淘宝商品价格信息时&#xff0c;需要注意以下方面&#xff1a; 一、法律和道德规范&#xff1a; 遵守法律法规&#xff1a;网络爬虫的行为应在法律允许的范围内进行。未经淘宝平台授权&#xff0c;大规模地爬取其商品价格信息并用于商业盈利等不当用途是违法的…

基于Python的自然语言处理系列(50):Soft Prompt 实现

在本篇文章中,我们将实现一个简单的 Soft Prompt 技术,该技术允许我们仅微调新增的嵌入权重,而保持预训练模型不变。Soft Prompt 的主要优势在于它的参数高效性,使得模型在特定任务上快速适应,而无需重新训练模型的所有权重。 1. Soft Prompt 概述 Soft Prompt 技术来源于…

stack和queue --->容器适配器

不支持迭代器&#xff0c;迭代器无法满足他们的性质 边出边判断 实现 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stack> #include<queue> using namespace std; int main() {stack<int> st;st.push(1);st.push(2);st.push(3);…

UE5 材质篇 1 如何偏移顶点

顶点偏移 start content里的plane长这样 我们进行一点顶点偏移就能长这样 XY加起来乘个缩放系数扔给sin结果乘个缩放系数即可

MySQL45讲 第十六讲 “order by”是怎么工作的?

文章目录 MySQL45讲 第十六讲 “order by”是怎么工作的&#xff1f;一、引言二、全字段排序&#xff08;一&#xff09;索引创建与执行情况分析&#xff08;二&#xff09;执行流程&#xff08;三&#xff09;查看是否使用临时文件 三、rowid 排序&#xff08;一&#xff09;参…

Ansys HFSS:外壳的屏蔽效果演示

欢迎回来&#xff01;随着电子系统变得越来越复杂和集成&#xff0c;确保适当的屏蔽以减轻电磁干扰 &#xff08;EMI&#xff09; 变得越来越重要。 继续讨论屏蔽效果&#xff0c;我们现在将重点转移到另一个强大的工具上&#xff1a;Ansys HFSS&#xff08;高频结构仿真器&am…

无人机避障——(局部规划方法)DWA(动态窗口法)

传统的DWA算法更加倾向于车辆等差速无人车&#xff0c;旋翼无人机是全速的&#xff0c;全向的。 全局路径是通过A*算法生成的 局部路径规划效果&#xff1a; DWA算法效果&#xff1a; 过程图&#xff1a; 完整过程&#xff1a; PID算法效果&#xff1a; 过程图&#xff1a…