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

打卡信奥刷题(3348)用C++实现信奥题 P9505 『MGOI』Simple Round I | D. 魔法环

P9505 『MGOI』Simple Round I | D. 魔法环

题目背景

最好的武器不一定最适合,最适合的武器才最好。——
殿堂魔法士 W

题目描述

小 M 面临着激发自己魂器——魔法环的任务。

魔法环上有nnn个节点,每个节点上都有一个魔法精灵,每个魔法精灵都有一个固定的魔供值,这些魔供值形成一个0∼n−10 \sim n-10n1的排列。

小 M 可以选择激活或不激活一个魔法精灵,但为了激发魔法环,必须至少激活k(≥2)k(\ge 2)k(2)个魔法精灵。

每个魔法精灵无论是否激活都会产生附魔值

  • 对于一个被激活的魔法精灵,它产生的附魔值为它的魔供值的平方
  • 对于一个未被激活的魔法精灵,它会在环上朝左右看,分别看向两边最近的被激活的魔法精灵。它会选择其中魔供值较大的一个作为「目标精灵」,产生的附魔值为这个「目标精灵」的魔供值与看向这个「目标精灵」时视线经过的距离乘积

作为新手,小 M 希望在激活魔法环的前提下,使得所有魔法精灵的附魔值之和最小,从而更好地控制魔法环的能量。

输入格式

第一行两个整数n,kn,kn,k

第二行nnn个整数,表示每个节点上魔法精灵的魔供值。

输出格式

一行一个整数,表示最小附魔值之和。

输入输出样例 #1

输入 #1

5 2 3 0 1 4 2

输出 #1

7

输入输出样例 #2

输入 #2

10 3 2 0 1 5 8 3 4 9 6 7

输出 #2

53

说明/提示

【样例 1 解释】

激活魔供值为000111的魔法精灵。

  • 魔供值为333的魔法精灵,选择魔供值为111的魔法精灵,产生的附魔值为1×3=31 \times 3 = 31×3=3
  • 魔供值为000的魔法精灵被激活,产生的附魔值为02=00^2=002=0
  • 魔供值为111的魔法精灵被激活,产生的附魔值为12=11^2=112=1
  • 魔供值为444的魔法精灵,选择魔供值为111的魔法精灵,产生的附魔值为1×1=11 \times 1 = 11×1=1
  • 魔供值为222的魔法精灵,选择魔供值为111的魔法精灵,产生的附魔值为1×2=21 \times 2 = 21×2=2

总共产生的附魔值为777

【数据范围】

本题采用 Subtask 捆绑测试。

对于所有数据,2≤k≤n≤30002\le k \le n \le 30002kn3000k≤100k \le 100k100,每个节点上魔法精灵的魔供值形成一个0∼n−10\sim n-10n1的排列。

Subtasknnnk≤k\lek分值
111101010101010131313
222100100100100100100171717
333300300300100100100212121
444100010001000100100100232323
555300030003000100100100262626

C++实现

#include<bits/stdc++.h>usingnamespacestd;constintN=3010,M=105;intp[N],q[N];longlongdp[N][M];inlinelonglongval(intpl,intpr){intcnt=(pr-pl-1)*(pr-pl)>>1;return1ll*max(p[pl],p[pr])*cnt+p[pr]*p[pr];}intmain(){intn,m,pos;scanf("%d%d",&n,&m);for(inti=1;i<=n;i++)scanf("%d",&q[i]);for(inti=1;i<=n;i++)if(!q[i])pos=i;for(inti=1;i<=n;i++)p[i]=q[(i+pos-1-1)%n+1];memset(dp,127,sizeof(dp));dp[1][1]=0;for(inti=1;i<=n;i++){for(intj=2;j<=min(i,m);j++){for(intk=1;k<i;k++){dp[i][j]=min(dp[i][j],dp[k][j-1]+val(k,i));if(j==m)dp[i][j]=min(dp[i][j],dp[k][j]+val(k,i));}}}longlongans=LLONG_MAX;for(inti=1;i<=n;i++)ans=min(ans,dp[i][m]+val(i,n+1));printf("%lld",ans);return0;}

后续

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

http://www.jsqmd.com/news/928158/

相关文章:

  • 2026年最新德阳市金银首饰回收+金条金币+铂金K金 高价回收;实体老店回收黄金 多年口碑 交易放心;TOP5实力权威排行榜推荐+联系方式 - 亦辰小黄鸭
  • DuQuant++:针对MXFP4激活异常值的块对齐旋转量化优化方案
  • 如何快速突破百度网盘限速:3步实现免费高速下载的完整方案
  • Arm CoreLink NI-710AE NoC架构与安全隔离机制解析
  • 2026年5月广州除甲醛公司推荐:靠谱品牌TOP榜单深度测评解析 - 品牌推荐
  • 别再只写单向RNN了!PyTorch中BiGRU的隐藏层拼接与梯度处理避坑指南
  • 从零到播放:手把手教你用LiveCMS+LiveSMS搭建一个可用的GB28181视频监控测试环境
  • 2026年最新德州市金银首饰回收+金条金币+铂金K金 高价回收;实体老店回收黄金 多年口碑 交易放心;TOP5实力权威排行榜推荐+联系方式 - 亦辰小黄鸭
  • 若依RuoYi-Vue项目实战:手把手教你集成微信小程序OpenID免密登录(Spring Security改造避坑)
  • 别再用裸机死循环了!用STM32CubeMX+FreeRTOS实现多任务切换,保姆级配置流程(Keil仿真)
  • ChatGPT时代,智能合约工程师如何利用AI提升开发效率与安全?
  • 从Arduino到3D打印机:手把手教你用TB6600HG驱动42步进电机(含电流调节与散热指南)
  • 告别数据标注!用Hugging Face的CLIP模型,5分钟搞定零样本图片分类(附完整代码)
  • 杭州奢侈品包包回收排行榜,2026 金榜商家合扬诚信回收 - 合扬奢侈品交易中心
  • 避坑指南:OV9281调试中HTS/VTS与曝光时间的那些‘坑’(附计算工具与排查思路)
  • 智慧树自动刷课插件:3步实现自动化学习,节省80%手动操作时间
  • 2026年最新定西市金银首饰回收+金条金币+铂金K金 高价回收;实体老店回收黄金 多年口碑 交易放心;TOP5实力权威排行榜推荐+联系方式 - 亦辰小黄鸭
  • 2026鹤壁市最具性价比(黄金+K金+白银+铂金)正规靠谱回收门店实力排行榜推荐及联系方式 - 前途无量YY
  • 告别虚拟机!在Windows 10/11上直接运行Swift代码的三种亲测方案
  • AI招聘全流程应用指南:从人才寻源到智能决策的实践与风险应对
  • 时间序列预测:从白噪声到积分模型的黄金基准实践
  • 科研项目资助体系与多学科团队协作实践
  • Windows 11 下用 PyTorch 1.13 + TorchRL 搞定 MuJoCo 环境,手把手教你跑通 PPO 算法(附避坑指南)
  • 构建技术团队的加速引擎:从CI/CD到心流开发的实战体系
  • Dell R730老当益壮:ESXi 8.0 vs 7.0定制版怎么选?实测安装与驱动兼容性指南
  • 2026年最新东莞市金银首饰回收+金条金币+铂金K金 高价回收;实体老店回收黄金 多年口碑 交易放心;TOP5实力权威排行榜推荐+联系方式 - 亦辰小黄鸭
  • Cortex-M3调试状态检测原理与实现方法
  • 跨视域融合技术,打破视频孪生场景联动壁垒
  • 南大CS保研,除了计科系,这四个“隐藏”学院也值得冲(附近三年录取数据)
  • 从CT扫描到3D重建:DICOM中Patient Position字段的实战避坑指南