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

【区间DP】P1063 [NOIP 2006 提高组] 能量项链

题目

P1063 [NOIP 2006 提高组] 能量项链
在这里插入图片描述

分析

重点:

  • 处理环问题,采用倍增策略
  • 将该题简单抽象成三个数合并

请添加图片描述
注意:对于倍增后的序列:2 3 5 10 2 3 5 10 我们研究的长度为n+1,若从2开始就到2结束,即:2 3 5 10 2,长度为n+1,这就叫成环。若从3开始就到3结束,即:3 5 10 2 3。

由此分析可见,本题可以抽象成三个数的石子合并问题,就得到了区间DP的解题思路。用区间的左右端点来描述状态,通过小区间的解来推导出大区间的解。

代码

#include<iostream>using namespace std;typedef pair<int,int> PII;const int N = 210;int n,f[N][N];int a[N];int main()
{cin >> n;for(int i=1;i<=n;i++) {cin >> a[i];a[i+n] = a[i]; //倍增解决环问题}//枚举长度(最大是n+1) for(int len=3;len<=n+1;len++) {//枚举左端点 for(int i=1;i+len-1<=2*n;i++){ int j = i + len - 1; //右端点 //枚举分割点for(int k=i+1;k<j;k++){f[i][j] = max(f[i][j],f[i][k] + f[k][j] + a[i] * a[k] * a[j]);} }}int ret = 0;for(int i=1;i<=n;i++){ret = max(ret, f[i][i+n]);}cout << ret;return 0;
}
http://www.dtcms.com/a/349856.html

相关文章:

  • 基于深度学习的人声分离系统设计与实现
  • Apache Commons Math_Java科学计算的利器
  • AP服务发现中两条重启检测路径
  • 南京魔数团:AR技术引领远程协作新纪元
  • C++ Core Guidelines 核心理念
  • ios webgl音频问题
  • 深入解析:为什么应该避免使用 atoi、atol 和 atof 函数
  • 集成算法概述与分类
  • 大数据毕业设计选题推荐-基于大数据的超市销售数据统计分析系统-Hadoop-Spark-数据可视化-BigData
  • 【opengl 实践】 windows下vscode配置遇到的问题
  • week4-[二维数组]幻方检测
  • 【Android】Activity和Fragment之间的通讯
  • 大型电动化工程机械设备智能施工试验场的网络设计方案
  • java基础(十五)计算机网络
  • 【栈 - LeetCode】739.每日温度
  • 深入理解JVM垃圾收集器:垃圾收集器
  • Vue3 + Golang Gin 实现客服实时聊天系统(WebSocket + Socket.IO 详解)
  • Maven、Spring Boot、Spring Cloud以及它们的相互关系
  • iptables 防火墙技术详解
  • 如何通过虚函数实现多态?
  • 文入门Ubuntu:从零到精通的Linux之旅
  • 数学建模-整数规划(IP)
  • FunASR语音识别框架流式识别模型切换
  • SpringBoot的条件装配原理
  • SpringBoot3集成Oauth2.1——10重启程序Token失效(RSA持久化)
  • Java项目-苍穹外卖_Day1
  • Visual Studio 2022调试Eigen库查看矩阵与向量的值
  • 大模型知识点之矩阵乘以向量
  • springboot:前后端调用(axios发送异步请求)
  • 那我现在有3个输入 9层神经元 每层神经元数为 3 9 3 5 6 2 3 9 8 请给出我所有的权重矩阵