【贪心交换排序】题解:P11376 [GESP202412 六级] 运送物资_贪心模型_排序_模拟_C++算法竞赛

发布时间:2026/10/29 10:29:54

【贪心交换排序】题解:P11376 [GESP202412 六级] 运送物资_贪心模型_排序_模拟_C++算法竞赛 文章目录题目描述题解时间限制1.00s内存限制512.00MB提供者沉石鱼惊旋难度普及/提高−标签贪心排序GESP2024题目描述小杨管理着m mm辆货车每辆货车每天需要向 A 市和 B 市运送若干次物资。小杨同时拥有n nn个运输站点这些站点位于 A 市和 B 市之间。每次运送物资时货车从初始运输站点出发前往 A 市或 B 市之后返回初始运输站点。A 市、B 市和运输站点的位置可以视作数轴上的三个点其中 A 市的坐标为0 00B 市的坐标为x xx运输站点的坐标为p pp且有0 p x 0 \lt p \lt x0px。货车每次去 A 市运送物资的总行驶路程为2 p 2p2p去 B 市运送物资的总行驶路程为2 ( x − p ) 2(x - p)2(x−p)。对于第i ii个运输站点其位置为p i p_ipi​且至多作为c i c_ici​辆车的初始运输站点。小杨想知道在最优分配每辆货车的初始运输站点的情况下所有货车每天的最短总行驶路程是多少。输入格式第一行包含三个正整数n , m , x n,m,xn,m,x代表运输站点数量、货车数量和两市距离。之后n nn行每行包含两个正整数p i p_ipi​和c i c_ici​代表第i ii个运输站点的位置和最多容纳车辆数。之后m mm行每行包含两个正整数a i a_iai​和b i b_ibi​代表第i ii辆货车每天需要向 A 市运送a i a_iai​次物资向 B 市运送b i b_ibi​次物资。输出格式输出一个正整数代表所有货车每天的最短总行驶路程。输入输出样例 #1输入 #13 4 10 1 1 2 1 8 3 5 3 7 2 9 0 1 10000输出 #140186说明/提示第1 11辆车的初始运输站点为站点3 33第2 22辆车的初始运输站点为站点2 22。第3 33辆车的初始运输站点为站点1 11第4 44辆车的初始运输站点为站点3 33。此时总驶路程最短为40186 4018640186。子任务编号数据点占比n nns ssc i c_ici​1 1120 % 20\%20%2 222 221 112 2220 % 20\%20%≤ 10 5 \leq 10^5≤105≤ 10 5 \leq 10^5≤1051 113 3360 % 60\%60%≤ 10 5 \leq 10^5≤105≤ 10 5 \leq 10^5≤105≤ 10 5 \leq 10^5≤105对于全部数据保证有1 ≤ n , m ≤ 10 5 1\leq n,m\leq 10^51≤n,m≤1052 ≤ x ≤ 10 8 2\leq x\leq 10^82≤x≤1080 p i x 0\lt p_i\lt x0pi​x1 ≤ c i ≤ 10 5 1\leq c_i\leq 10^51≤ci​≤1050 ≤ a i , b i ≤ 10 5 0\leq a_i,b_i\leq 10^50≤ai​,bi​≤105。数据保证∑ c i ≥ m \sum c_i\geq m∑ci​≥m。题解/* 首先考虑列出每辆车的总行驶路程s2*a[i]*p2*b[i]*(x-p) 根据直觉a[i]b[i]的车应当优先分配靠左的p[x]a[i]b[i]的车应该优先分配靠右的p[x]所以需要排序解决 那怎么排序呢 在所有a[i]b[i]的车中贪心地想a[i]越多的应该越靠左但同时也要考虑b[i]的影响所以应该是a[i]-b[i]越大的越靠左安排 a[i]b[i]同理 证明排序不等式 适用于代价两两不相关的交换/排序问题 假设对于两辆车i,ji在p1j在p2如果把i移到j更优就要求原来的总代价大于交换后的总代价即 2*a[i]*p12*b[i]*(x-p1) 2*a[j]*p22*b[j]*(x-p2) 2*a[i]*p22*b[i]*(x-p2) 2*a[j]*p12*b[j]*(x-p1) a[i]*p1 - b[i]*p1 a[j]*p2 - b[j]*p2 a[i]*p2 - b[i]*p2 a[j]*p1 - b[j]*p1 a[i]*(p1-p2) b[i]*(p2-p1) a[j]*(p1-p2) b[j]*(p2-p1) (a[i]-b[i])(p1-p2) (a[j]-b[j])(p1-p2) a[i]-b[i] a[j]-b[j] 然后贪心模拟即可注意a[i]b[i]的情况可以与a[i]b[i]的情况一同处理变成a[i]b[i] */#includebits/stdc.husingnamespacestd;typedeflonglongll;constintN1e55;intn,m,x,cnt1,cnt2;structInfo{intp,c;}t[N];// 运输站点structNode{inta,b;}f[N],g[N];// 货车 f:a[i]b[i] g:a[i]b[i]voidsolve(){cinnmx;for(inti1;in;i){cint[i].pt[i].c;}for(inti1;im;i){intaa,bb;cinaabb;if(aabb)f[cnt1]{aa,bb};elseg[cnt2]{aa,bb};}sort(t1,tn1,[](Info p1,Info p2){returnp1.pp2.p;});sort(f1,fcnt11,[](Node p1,Node p2){returnp1.a-p1.bp2.a-p2.b;});sort(g1,gcnt21,[](Node p1,Node p2){returnp1.b-p1.ap2.b-p2.a;});intnow1;ll ans0;for(inti1;icnt1;i){if(t[now].c0)now;ans2LL*f[i].a*t[now].p2LL*f[i].b*(x-t[now].p);t[now].c--;}nown;for(inti1;icnt2;i){if(t[now].c0)now--;ans2LL*g[i].a*t[now].p2LL*g[i].b*(x-t[now].p);t[now].c--;}coutans\n;}signedmain(){ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);solve();return0;}
延伸阅读

更多相关文章

2026/10/29 10:29:54

【CPU】Hypervisor 中 LHP / LWP 问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/29 10:29:54

开拓者:正义之怒 职业构建:3步走完开卡到毕业

开拓者:正义之怒 职业构建:3步走完开卡到毕业 【免费下载链接】Wotr-BD-LR 正义之怒Wotr主角BD搜集 项目地址: https://gitcode.com/GitHub_Trending/wo/Wotr-BD-LR 本文是 开拓者:正义之怒 职业构建 实战攻略,基于 Wotr-B…

2026/10/29 10:24:53

少而精的效率工具组合:从混乱到每天省两小时

1. 先聊清楚一件事:效率工具到底在解决什么问题我见过太多人陷入一个死循环:下载了上百个号称"神器"的效率工具,每天打开电脑光是想清楚用哪个软件、找文件在哪,就耗掉了半小时。结果时间没省下来,反而被工具…

2026/10/29 11:40:19

原生JavaScript实现TodoList:前端基础项目实战

1. 项目概述:为什么选择TodoList作为前端练手项目 TodoList(待办事项列表)可以说是前端开发者最好的"Hello World"项目之一。它涵盖了前端开发最核心的几项能力:DOM操作、事件处理、数据管理和本地存储。我在带新人时发…

2026/10/29 11:40:19

JavaScript实战:从零构建TodoList应用

1. 项目概述:为什么选择TodoList作为JavaScript实战项目? TodoList(待办事项列表)可以说是前端开发者最好的"Hello World"项目之一。作为一个看似简单的应用,它完美涵盖了前端开发的核心技术栈:D…

2026/10/29 11:40:19

安全生产月知识竞赛全流程策划与执行指南

1. 项目概述 "安全生产月知识竞赛"是每年6月全国安全生产月期间广泛开展的一项重要活动。作为企业安全管理部门负责人,我连续5年主导策划并执行了这项活动,累计参与员工超过3000人次。这种竞赛形式不仅能有效检验员工安全知识掌握程度&#xf…

2026/10/29 11:40:19

C语言switch与goto在逆向工程中的深度解析

1. 项目概述 作为一名有着15年C语言开发经验的工程师,我经常看到初学者对switch和goto这两个流程控制语句存在诸多误解。今天我们就来深入探讨这两个看似简单却暗藏玄机的语法结构,特别是在逆向工程领域的特殊应用场景。 在逆向分析过程中,理…

2026/10/29 11:40:19

AI智能体开发:从伪智能到真自主的技术解析

1. 项目概述:揭开AI智能体的真实面纱 最近在开发者社区里有个现象特别有意思:随便打开一个技术论坛,几乎每三天就能看到一个新发布的"AI智能体"项目。这些项目往往打着"完全自主"、"类人思考"、"无需干预…

2026/10/29 11:35:10

算法竞赛必备:Acwing模板背诵与实战优化技巧

1. 为什么算法模板需要专门背诵? 第一次接触算法竞赛时,我也曾疑惑:为什么不能现场推导?实战中才明白,比赛时的紧张氛围和严格时间限制,让模板背诵成为必备技能。就像篮球运动员必须把标准投篮动作练成肌肉…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑