当前位置: 首页 > 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.jsqmd.com/news/973141/

相关文章:

  • 从词性标注到命名实体识别:手把手教你用pyltp的Postagger和NamedEntityRecognizer构建信息提取小工具
  • Windows下用venv创建Flask虚拟环境的完整指南
  • 2026年6月北京十大装修公司推荐:专业评测排名选择指南价格 - 品牌推荐
  • SuperMap iDesktop进阶技巧:没有公开参数?手把手教你从已有数据‘炼’出坐标系转换秘籍
  • 避坑指南:用R语言mediation包做中介分析,这3个细节错了结果全白费
  • AI 云原生后端架构与智能服务网格治理实践
  • 高频数据下载和分析笔记,逐笔tick和分钟行情拆分记录分享
  • 2025-2026年北京装修公司排行榜推荐:十大排名大户型全案评测专业注意事项价格 - 品牌推荐
  • 告别Triplet Loss的纠结:用Circle Loss在PyTorch里轻松搞定人脸识别模型
  • 避坑指南:ESP32驱动ST7789/ILI9341屏,LVGL移植中那些配置菜单(menuconfig)里容易踩的坑
  • JupyterLab 3.x 用户必看:升级后IProgress报错的完整修复指南(含conda/pip方案)
  • Tensorboard使用
  • Sqribble深度解析:云原生文档出版流水线的架构与实践
  • 手搓Claude Code-第二章 tool_use
  • 台风天开空调安全吗?工程师拆解外机原理与真实风险
  • 2026年熬夜整理10款论文降AI工具红黑榜,避开知网退稿大坑 - 降AI实验室
  • 团队协作必看:用Git和IDEA彻底告别Windows/Mac混用导致的代码历史混乱
  • 应用安全 --- IDA FLIRT 原理
  • 告别玄学调参:手把手教你用MATLAB/Simulink搭建PMSM的EKF观测器(附模型下载)
  • Cityscapes不够用?试试5倍数据量的Mapillary Vistas:自动驾驶数据增强实战指南
  • 多维聚合后的数据变形术:从SQL GROUP BY到可编程数据立方体
  • 2026年6月南昌全屋定制品牌推荐:TOP5评测专业对比适用场景价格 - 品牌推荐
  • 用两个HC-05蓝牙模块,低成本搭建你的无线PID调参和遥控小车数据链路
  • Cocos Creator 2.3.3成语闯关游戏工程源码,含大厅/主玩法/完成页/加载页/断线重连
  • 别再死磕公式了!用Cartographer建图时,概率栅格更新的‘查表法’到底快在哪?
  • AI编码加速后,如何突破CI/CD与代码审查瓶颈
  • 实验5-2:浏览器市场分析-大屏静态布局制作
  • OpenMV IDE不只是调试工具:手把手教你用它批量生成Apriltag全家族图片
  • 笔记本频繁黑屏(nvlddmkm Event 14)NVIDIA nvlddmkm ID: 14 ID: 153 问题分析与解决
  • 2026年烟台CPPM报名费用资料怎么核对?众智商学院官网400冯老师课程班期 - 众智商学院官方