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

[AGM 2022 资格赛] 分裂 题解

[AGM 2022 资格赛] 分裂 题解

洛谷链接,记得点赞

前言

一道十分有意思的小题。

分析

观察这个式子,可以考虑使用 DP。

d p i , j dp_{i,j}dpi,j表示前i ii个元素,已经划分了j jj非空子段的最大得分。

直接写出状态转移:
d p i , j = max ⁡ k = j − 1 i − 1 ( d p k , j − 1 + [ max ⁡ p = k + 1 i ( a p ) ] b j − [ min ⁡ p = k + 1 i ( a p ) ] b j ) dp_{i,j}=\max_{k=j-1}^{i-1}(dp_{k,j-1}+[\max_{p=k+1}^i(a_p)]^{b_j}-[\min_{p=k+1}^i(a_p)]^{b_j})dpi,j=k=j1maxi1(dpk,j1+[p=k+1maxi(ap)]bj[p=k+1mini(ap)]bj)
显然,这是O ( n 4 ) O(n^4)O(n4)的时间复杂度,即使使用 ST 表优化查询,也会达到O ( n 3 ) O(n^3)O(n3),会超时。

仔细一看,发现转移只跟最大值最小值有关。

所以答案就成了选择K KK个点对的最大得分。

状态定义

d p i , j , k dp_{i,j,k}dpi,j,k表示前i ii个元素,已经开始划分第j jj非空子段,状态为k kk的最大得分。

其中,k kk的含义为:

  • k = 0 k=0k=0,则表示所有的点对已经配对
  • k = 1 k=1k=1,则表示仅配对了最大值。
  • k = 2 k=2k=2,则表示仅配对了最小值。

根据定义,答案就是d p n , K , 0 dp_{n,K,0}dpn,K,0

状态转移

显然,选取最大值a i a_iai的贡献是a i b j a_i^{b_j}aibj,最小值的贡献是− a i b j -a_i^{b_j}aibj

对于每一个状态k kk,除了不选,有如下的转移路径:

  • k = 0 k=0k=0时,可以独成一段或从k = 1 k=1k=1或从k = 2 k=2k=2转移。
  • k = 1 k=1k=1k = 2 k=2k=2时,可以从闭合状态转移。
初始化

因为可能出现负数,显然需要将d p dpdp数组初始化为极小值。

此外,由于在枚举i ii时,k = 0 k=0k=0时转移会访问到d p i , 0 , 0 dp_{i,0,0}dpi,0,0,所以需要初始化d p i , 0 , 0 dp_{i,0,0}dpi,0,00 00

参考代码

#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,k;inta[5010],b[5010];intdp[3][5010][5];intfpow(intx,inty){intres=1;while(y){if(y&1)res*=x;x*=x;y>>=1;}returnres;}signedmain(){memset(dp,0xc0,sizeof(dp));cin>>n>>k;for(inti=1;i<=n;i++){cin>>a[i];}for(inti=1;i<=k;i++){cin>>b[i];}for(inti=0;i<=n;i++){dp[i][0][0]=0;}for(inti=1;i<=n;i++){for(intj=1;j<=min(k,i);j++){dp[i&1][j][0]=max({dp[(i-1)&1][j][0],dp[(i-1)&1][j-1][0],dp[(i-1)&1][j][1]-fpow(a[i],b[j]),dp[(i-1)&1][j][2]+fpow(a[i],b[j])});dp[i&1][j][1]=max({dp[(i-1)&1][j][1],dp[(i-1)&1][j-1][0]+fpow(a[i],b[j])});dp[i&1][j][2]=max({dp[(i-1)&1][j][2],dp[(i-1)&1][j-1][0]-fpow(a[i],b[j])});//要么不选,要么选}}cout<<dp[n&1][k][0];return0;}

by lonys

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

相关文章:

  • 2026年螺杆泵选购不踩坑指南:全维度对比适配各需求品牌清单 - 上海泵阀科技网
  • 从零构建AI Agent:基于LangGraph的多智能体系统实战与面试指南
  • word压缩大小怎么弄?7款PDF与文档压缩工具实测盘点
  • Unity游戏开发配置管理革命:Luban Next自动化部署与集成实战指南
  • xLua热更新下Unity网格渲染性能优化实战:五大技巧解决卡顿与高DrawCall
  • 小红书视频下载方法与保存无水印视频的完整实践手册,摸清**规则与第三方下载工具风险 - 免费软件工具方法教程
  • 2026年8月苹果合肥品牌授权售后查询与进液后处理与资料保护|散热负载检查|电话接收确认 - 数码产品售后
  • AI数字供应链安全治理:技术架构与行业实践
  • Java后端实战进阶:从JVM调优到微服务与AI落地的全栈能力构建
  • Docker部署OpenClaw汉化版:从环境隔离到一键启动的完整实践
  • 2026年气动隔膜泵厂家推荐 高口碑品牌选购全指南 - 上海泵阀科技网
  • AI 办公 Agent 扎堆上线,个人开发者如何管理碎片化线上工具
  • Zotero Citation:让学术写作中的引用管理变得轻松高效
  • League Akari:英雄联盟玩家的智能助手,5大功能提升游戏体验
  • 企业级RAG问答系统实战:从文档处理到智能检索的完整构建指南
  • 国产CPU五强横评:鲲鹏/海光/飞腾/兆芯/龙芯
  • Baklib在RubyConf China 2025拆解企业内容管理三大痛点与落地案例
  • 告别版本混乱:基于Git Flow与CI/CD的自动化发布规范实践
  • 终极帧率解锁指南:如何让原神和星穹铁道突破60帧限制
  • CAP定理在大数据系统中的实践与权衡
  • Origin高效科研绘图:从零构建个性化工作流与模板配置
  • 2026年8月南昌机械革命电脑售后电话与门店地址|不开机、进水与屏幕故障处理说明|红谷滩区等区域预约维修核对 - 笔记本售后大全
  • Python+Vue无纸化办公系统开发实战
  • 终极围棋AI分析指南:用LizzieYzy从入门到精通的完整教程
  • MCP百万token窗口首周账单:我的预算表竟漏算了这3类隐性成本
  • UE5配置系统深度解析:从C++默认值到DeviceProfile的优先级链
  • Java集合框架核心原理与面试高频考点解析
  • 2026年“华数杯”国际大学生数学建模竞赛 ICM 问题B:谁将赢得全球人工智能竞赛?基于AHP模糊综合评价、系统动力学与遗传算法的全球AI发展能力评价及中国专项基金配置研究 ——论文
  • Windows Subsystem for Android:在Windows 11上运行安卓应用的3大核心优势
  • AI 前沿日报 | 2026年08月08日 星期六