当前位置: 首页 > 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.cnnetsun.cn/news/2820132.html

相关文章:

  • 告别CAN的奢侈:一文搞懂LIN总线如何用UART接口搞定汽车低速通信
  • 用两个HC-05蓝牙模块,低成本搭建你的无线PID调参和遥控小车数据链路
  • C#写的CIE1931马蹄图绘制工具,可调画布大小并导出PNG
  • 别再为PLC测试买硬件了!用C#和PLCSIM Advanced V3.0搭建本地仿真环境(附S7NetPlus读写避坑指南)
  • 手写伯努利朴素贝叶斯:从条件概率到对数平滑的完整实现
  • STM32F4/F7上移植SOEM 1.4.0主站:从LAN8720驱动到伺服控制的完整避坑记录
  • 告别手动配IP!用STM32+W5500实现DHCP自动获取网络地址(附完整代码)
  • 给自动驾驶算法工程师的仿真利器:用MATLAB Simulink控制UE4虚拟环境完整流程
  • 8088单板机监控程序解读(四)
  • STM32CubeMX配置FreeRTOS信号量时,这3个坑我帮你踩过了(附避坑指南与调试技巧)
  • 女硬件工程师多吗?
  • Python 3.13 连续迭代,自由线程、JIT 编译器、子解释器三剑齐发
  • 避坑指南:ArcGIS里做IDW插值,你的搜索半径和幂值设置对了吗?
  • 第四周小学期
  • SpringAOP原理和代理模式详解
  • SpeakCoach
  • 实测揭秘:WPS双进程备份机制,内存占用真的高吗?手把手教你手动清理驻留进程
  • VMware网络感叹号?别急着重装!手把手教你修复VMnet1/VMnet8驱动代码31错误
  • 扫描阅卷机支持哪些格式的试卷?
  • 2、K8S网络概述
  • x64汇编案例5
  • SysConfig Device Support 笔记
  • VC6环境下内存直载DLL的完整可运行工程包(含源码、编译成品与测试模块)
  • ToxiTwitch:基于混合模型的Twitch实时聊天毒性检测
  • 新闻语义处理流水线:面向金融NLP的结构化解码与时序锚定
  • AI动态简报之商业洞察篇(2026.06.07)
  • 电机控制工程师必看:手把手教你配置TMS320F280049的SDFM模块进行电流采样
  • 【个人博客—山东大学项目实训——古诗词与文章智能创作助学平台(六)】
  • 生产级机器学习服务的三大支柱:可观测性、弹性和契约
  • AI实战第5篇:Python+DeepSeek智能简历优化器,HR看了直呼专业