当前位置: 首页 > news >正文

打卡信奥刷题(3369)用C++实现信奥题 P9691 [GDCPC 2023] Base Station Construction

P9691 [GDCPC 2023] Base Station Construction

题目描述

中国移动通信集团广东有限公司深圳分公司(以下简称深圳移动)于199919991999年正式注册。四年后,广东省大学生程序设计竞赛第一次举办。深圳移动与广东省大学生程序设计竞赛一起见证了广东省计算机行业的兴旺与发展。

在建设通信线路的过程中,信号基站的选址是一个非常关键的问题。某城市从西到东的距离为nnn千米,工程师们已经考察了在从西往东1,2,⋯ ,n1, 2, \cdots, n1,2,,n千米的位置建设基站的成本,分别是a1,a2,⋯ ,ana_1, a_2, \cdots, a_na1,a2,,an

为了保证居民的通信质量,基站的选址还需要满足mmm条需求。第iii条需求可以用一对整数lil_ilirir_iri表示(1≤li≤ri≤n1 \le l_i \le r_i \le n1lirin),代表从西往东lil_ili千米到rir_iri千米的位置之间(含两端)至少需要建设111座基站。

作为总工程师,您需要决定基站的数量与位置,并计算满足所有需求的最小总成本。

输入格式

有多组测试数据。第一行输入一个整数TTT表示测试数据组数,对于每组测试数据:

第一行输入一个整数nnn1≤n≤5×1051 \le n \le 5 \times 10^51n5×105)表示城市从西到东的距离。

第二行输入nnn个整数a1,a2,⋯ ,ana_1, a_2, \cdots, a_na1,a2,,an1≤ai≤1091 \le a_i \le 10^91ai109),其中aia_iai表示在从西往东iii千米的位置建设基站的成本。

第三行输入一个整数mmm1≤m≤5×1051 \le m \le 5 \times 10^51m5×105)表示需求的数量。

对于接下来mmm行,第iii行输入两个整数lil_ilirir_iri1≤li≤ri≤n1 \le l_i \le r_i \le n1lirin)表示从西往东lil_ili千米到rir_iri千米的位置之间(含两端)至少需要建设111座基站。

保证所有数据nnn之和与mmm之和均不超过5×1055 \times 10^55×105

输出格式

每组数据输出一行一个整数,表示满足所有需求的最小总成本。

【样例解释】

对于第一组样例数据,最优方案是在从西往东222千米和555千米的位置建设基站。总成本为2+100=1022 + 100 = 1022+100=102

对于第二组样例数据,最优方案是在从西往东222千米和444千米的位置建设基站。总成本为3+2=53 + 2 = 53+2=5

输入输出样例 #1

输入 #1

2 5 3 2 4 1 100 3 1 3 2 4 5 5 5 7 3 4 2 2 3 1 4 2 3 4 5

输出 #1

102 5

C++实现

#include<bits/stdc++.h>#defineMAXN500005usingnamespacestd;typedeflonglongLL;intn,m,a[MAXN];structSEG{intl,r;booloperator<(constSEG&B)const{returnr<B.r;}//将区间按右端点从小到大排序。}e[MAXN];LL f[MAXN];intq[MAXN],h,t;voidsolve(){scanf("%d",&n);for(inti=1;i<=n;i++)scanf("%d",&a[i]);scanf("%d",&m);for(inti=1;i<=m;i++)scanf("%d%d",&e[i].l,&e[i].r);sort(e+1,e+m+1);intl=0;h=1,t=0,q[++t]=0;for(inti=1,j=1;i<=n;i++){f[i]=f[q[h]]+a[i];while(h<=t&&f[q[t]]>f[i])--t;//弹出不优的决策。q[++t]=i;for(;j<=m&&e[j].r<=i;j++)l=max(l,e[j].l);//双指针维护最大值。while(h<=t&&q[h]<l)++h;//排除过时决策。}printf("%lld\n",f[q[h]]);}intmain(){intT;scanf("%d",&T);while(T--)solve();return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.rkmt.cn/news/1484868.html

相关文章:

  • C51单片机驱动TM1628控制多位数码管的完整工程包(含Keil可编译源码与调试文件)
  • 手搓Claude Code-第二章 tool_use
  • 应用安全 --- IDA FLIRT 原理
  • 多维聚合后的数据变形术:从SQL GROUP BY到可编程数据立方体
  • 别再死磕公式了!用Cartographer建图时,概率栅格更新的‘查表法’到底快在哪?
  • 告别玄学调参:手把手教你用MATLAB/Simulink搭建PMSM的EKF观测器(附模型下载)
  • AI编码加速后,如何突破CI/CD与代码审查瓶颈
  • OpenMV IDE不只是调试工具:手把手教你用它批量生成Apriltag全家族图片
  • 笔记本频繁黑屏(nvlddmkm Event 14)NVIDIA nvlddmkm ID: 14 ID: 153 问题分析与解决
  • 元知识库构建方案
  • 2026年城市供水管网信息化改造全流程:从勘测设计到系统上线
  • 哪家南昌全屋定制品牌专业?2026年6月推荐TOP5评测对比适用场景特点 - 品牌推荐
  • 计算机内存中的栈和堆
  • 【钢铁雄心4】超简单低延迟保姆级联机教程,一分钟学会钢铁雄心局域网联机!!
  • Scikit-image图像处理实战:从蒙娜丽莎解构到医学级滤波
  • 手把手教你用HTML+CSS复刻一个简约风个人主页(附完整源码和素材)
  • VS Code + AWS SSM零配置远程开发实战
  • VSCode + Ollama + Continue 本地 AI 代码助手 实操手册
  • 别再混淆了!用PyTorch的ConvTranspose2d手把手搞懂反卷积(附代码验证)
  • 国内优质的静音发电机企业口碑推荐,附近发电机/高压发电机租赁/应急发电机/本地发电机出租,静音发电机品牌哪家强 - 品牌推荐师
  • Matlab大气湍流相位屏生成工具:Zernike建模+波前仿真+斯特雷尔比评估
  • 大模型工程化跃迁:OpenAI 4.1、grok-3与Scaling Laws实战指南
  • 第3章 Agent 类型分类与设计模式
  • 2026年6月郑州黄金回收店推荐:五大专业评测报价透明防压价案例 - 品牌推荐
  • 2026年最新邢台市黄金回收店铺TOP5排行榜 黄金+白银+铂金+K金回收门店指南及联系方式电话推荐 - 大熊猫898989
  • Wine Quality 可复现机器学习实验:随机森林二分类实战
  • 2026年众智商学院软考中级系统集成资料领取和题库怎么核对?官网400冯老师费用咨询 - 众智商学院职业教育
  • 别再傻傻分不清了!电磁继电器和磁保持继电器到底怎么选?看完这篇就懂了
  • 大模型工具描述优化:提升Agent调用准确率的核心基建
  • 2026年最新清远市黄金回收店铺TOP5排行榜 黄金+白银+铂金+K金回收门店指南及联系方式电话推荐 - 大熊猫898989