P1063 能量项链(区间dp经典题)

区间DP 入门 详解 P1880 [NOI1995]石子合并 要注意这是个环,是一个石子圈。 怕日后我自己又看不懂了就放个链接,还是很好理解的 时间复杂度O(8N3)O(8N^3)O(8N3) #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<... 阅读详情

https://www.luogu.org/problemnew/show/P1063

题解

这个和合并石子的不同之处就是一个珠子多了头和尾的能量,并可以成环,成环的解决方法便是复制一遍即可,合并的时候就要有一些细节处理。比较简单的方法就是把长度为3的区间当成是两个珠子合并的结果,那么n个珠子合并便是长度为n+1的区间。
为什么这样呢,因为珠子1与珠子2合并的能量是 珠子1珠子2珠子3
转移方程:
dp[l][r] = max(dp[l][r], dp[l][k]+dp[k][r]+a[l]*a[k]*a[r])。

代码

#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef pair<int,int> pii;
typedef long long ll;
const int maxn = 200+10;
int n;
pii a[maxn];
int dp[maxn][maxn];
int main() {
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%d", &a[i].x);
        a[i+n].x = a[i].x;
    }
    for(int i = 0; i < n; ++i) {
        a[i].y = a[(i+1)%n].x;
        a[i+n].y = a[i].y;
    }
    int len = (n<<1);
    for(int i = 0; i < len; ++i) dp[i][i] = 0;
    int ans = 0;

    for(int i = 2; i <= n+1; ++i) { // 因为成环,所以是n+1,[1,3] 相当于[1,2]的值
        for(int l = 0; l+i-1 <= len-1; ++l) {
            int r = l+i-1;
            int v = dp[l][r];
            for(int k = l+1; k < r; ++k) {
                // cout << r << endl;
                // << "#" << l << " " << k << " " << r << endl;
                // cout << a[j].x << " " << a[k].y << " " << a[r].y << endl;
                v = max(v, dp[l][k]+dp[k][r]+a[l].x*a[k].x*a[r].x);
                // cout << j << " " << r << " " << dp[j][r] << endl;
                // cout << v << endl;
            }
            dp[l][r] = v;
            ans = max(v,ans);
        }
    }
    cout << ans << endl;
    return 0;
}
高效批量转换Java接口为MCP服务:降低重复劳动的实战指南 阅读详情

相关推荐

棋牌App逆向工程实战:透视风险分析与反作弊加固思路

在移动应用安全领域,逆向工程是一项关键的攻防技术,它通过静态分析、动态调试与协议抓包等手段,深入还原客户端真实逻辑。这项技术的核心原理,是从已编译的安装包中提取数据流,验证服务端下发的信息是否超出了客户端应有的可见范围。从技术价值看,安全测试人员可以借此定位协议层、内存层与缓存层的潜在风险,为反作弊体系提供精准的加固建议。在棋牌类App等实时对局场景中,逆向工程常被用于排查牌局信息泄露类隐患,而合规授权与测试环境是开展此类研究的必要前提。本文结合一次棋牌App的安全评估实践,梳理了从环境准备到数据流还原的完

weixin_29326909的博客 174

P1063 [NOIP2006 提高组] 能量项链 题解

本文讲解P1063 [NOIP2006 提高组] 能量项链。

本人没什么优点,唯一的优点就是有一个优点。 2345

手把手教你用C++和NI-VISA写个简易仪器上位机(附QT工程配置)

本文详细介绍了如何使用C++和QT框架结合NI-VISA驱动开发跨平台仪器控制上位机软件。从Ubuntu环境配置、VISA通信核心架构设计到QT界面与业务逻辑解耦,提供了完整的实战指南和代码示例,帮助开发者快速构建专业级仪器控制程序。

weixin_42522374的博客 273

区间DP之 能量项链 (详细分析)

这一题最好先观看 石子合并2 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m×r×n(Mars单位)

cqbz_lanziming的博客 434

基于51单片机的多功能计算器全套设计

当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且人脑比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器设计开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。 本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用5×8矩阵键盘,可以进行加、减、乘、除等十几种数字运算,同时支持括号

runweipa的博客 1742

AXI Timer IP核使用说明

AXI Timer是提供定时技术功能的集成IP核,具有时间生成、事件捕获、产生PWM波以及产生中断的功能,下面具体讲述Timer IP核的使用说明。

weixin_43418104的博客 2487

dp NOIP2006提高 能量项链

原题:能量项链 题意: 两个珠子两个数字,第一个为2 3,第二个为3 5,那么我们可以合并这两个珠子,变成2 5,得到2*3*5的能量。 现在给一串珠子(首尾相连成一个环),我们可以任意合并两个珠子,求把这一串珠子合并成一个的时候得到的最大能量。 解析: 这个题因为每次可以任意选择两个珠子合并,所以有n!的可能性,不能暴力,需要用dp来做。 (因为从最后一个开始合并的话需要前面的数,所...

QAQ 619

C#与倍福Plc通信——使用仿真软件模拟倍福PLC运行

安装这个软件之前先安装VisualStudio,本文安装这个软件时已经安装了VisualStudio2019。1、下载倍福PLC编程软件TwinCAT。

qq_34059233的博客 3664

Dire Wolf (区间dp经典题)

Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not all, Dire Wolves appear to originate from Draenor. Dire wolves look like normal wolves, but these ...

自渡的博客 1848

『OPEN3D』1.2 mesh处理 python篇

介绍open3d对mesh的基本处理操作

NNNNNathan的博客 4648

【ARM CoreLink 系列 4 -- NIC-400 控制器详细介绍】

正常情况下,一个NIC的实现,可以包含一百多个master和几十个slave,每个master和每个slave都会有一些寄存器,这些寄存器可以被 programming,实际实践中就会对 AMIB 或者 ASIB 或者 IB,当它需要具有 programming的时候,给它指定一个node number。为什么指定Node Number呢?首先,从CPU的角度,它需要有一个1M对齐的地址空间,在这1M地址空间上,对每个ASIB或者AMIB这样的接口给它一个node number以后,

CodingCos的博客 5241

soj 11600 Pick It 矩阵连乘模型 动态规划 acdream 1208 qj的奇怪宝具 noip 2006 energy 能量项链

soj 11600 Pick It

gwq5210的专栏 1206

WPF进阶 | 深入 WPF 依赖项属性:理解其强大功能与应用场景

WPF进阶 | 深入 WPF 依赖项属性:理解其强大功能与应用场景,在 Windows Presentation Foundation(WPF)开发中,依赖项属性是一个核心且强大的特性,它为构建灵活、可扩展的用户界面提供了关键支持。理解并熟练运用依赖项属性,对于开发高效、健壮的 WPF 应用程序至关重要。本文将深入探讨 WPF 依赖项属性,通过丰富的代码示例和对关键概念的详细解释,帮助读者全面掌握这一重要特性及其应用场景。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

区间背包x2

2 3 5 10第1颗:2 -> 3第2颗:3 -> 5第3颗:5 -> 10第4颗:10 -> 2因此第i头 = v[i]尾 = v[i+1]dp[l][r]表示:将区间[l,r]中的所有珠子合并成一颗珠子时,能够获得的最大总能量。左珠子:右珠子:m -> xx -> nm × x × n因为项链是一个环。第1颗开始第2颗开始……第n颗开始任意位置断开。i<=n;i++){看到“环形相邻合并 + 合并顺序影响答案”,想到复制数组做环形区间DP;

2604_96548757的博客 340

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

题解:P1063 [NOIP2006 提高组] 能量项链

一道区间 dp 的板子题。

Popandsoss2022的博客 1036

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

P1063 能量项链(C++_区间dp)

题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一...

ccql's Blog 1967

洛谷 P1063 能量项链 区间dp

洛谷 P1063 能量项链 区间dp 题解: 用dp[l][r]表示以dp[l]开头dp[r]结尾的数串的最大和,如k为i,j之间任一节点, 有:dp[l][r] = max(dp[l][r], dp[l][k] + dp[k][r] + a[l] * a[k] * a[r]) 在环形问题中,可以将n个元素复制一遍,变成2*n个元素,简化代码。 代码如下: #include<iostream...

化身孤岛的鲸o的博客 482

P1063 [NOIP 2006 提高组] 能量项链

设dp[i][j]表示从第i颗珠子到第j颗珠子合并后释放的最大能量值。cpp// 定义最大数组大小int n;cin >> n;// 存储珠子标记的数组// 动态规划数组MAXN设为210是因为环形处理需要将原数组复制一份,所以最大需要2n的空间。bead数组存储每个珠子的标记,dp数组用于存储子问题的解。bead[i]:合并后整个区间的头标记(第一颗珠子的头标记)bead[k+1]:分割点处珠子的尾标记,也是合并时的中间标记bead[j+1]:合并后整个区间的尾标记(最后一颗珠子的尾标记)

Yiping2012ABC的博客 1022

区间dp&记忆化搜索-P1063 能量项链

P1063 能量项链 https://www.luogu.org/problem/P1063 另外推荐一下同类型P1880 石子归并 思路 经典区间dp,题目要求的是整个区间的最优解,所以根据DPDP的最优性原理,我们可以从最小的可求最优解的区间入手(即n=2n=2,因为只有一颗珠子时无法合并),每次尝试把它分成两个不同的小区间,从中取最优的方案。 设f [ i ][ j ] ,f[ i ][ j...

dajiangyou123456的博客 267

[区间dp] 洛谷P1063-能量项链

题目链接:洛谷P1063 解题思路: 一、与石子归并问题相同,我们先解决线性情况下的简单问题: 由题目中的一条计算式子"((4⊕1)⊕2)⊕3)=10×2×3+10×3×5+10×5×10=710"我们可以得到一些灵感。 我们可以将珠子的聚合视作合并,即珠子(i,k)与(k,j)聚合后组成珠子堆(i,j),易知两堆珠子的聚合可抽象出同样的聚合模式,例: 珠子堆(i,k)与珠子堆(k,j)合并组成...

qq_18650787的博客 271

[区间DP]洛谷P1063 能量项链

目录题意样例样例输入:样例输出:思路总结代码 题意 样例 样例输入: 4 2 3 5 10 样例输出: 710 思路 1.经典区间DP题 算是合并石子的变种 只不过由一个点变成了一个区间 不过我们也可以用结构体存储 当做一个点来看 dp[l][r]表示区间[l,r]能释放的最大能量和 则dp[l][r]可通过子区间dp[l][k]和dp[k+1][r]合并得到 (l<=k<r) 再加上两个子区间合并释放的能量即可 2.由于是一个环 需要拆环为链 即将n扩展为2*n-1 最后答案在m

linshen_jianhai的博客 418

洛谷 p1063 能量项链 区间和环形动态规划dp

洛谷P1063 能量项链 题目链接 题目要求是求得一个最大的能量值,一个最优解。用动态规划做。 因为这是一个环形的手链,那么情况就比较复杂。但是我们可以复杂问题简单化,把环形的手链剪开,变成链形。比如:一条 2 3 5 10 的环状手链,可以从不同位置剪开,变成四条手链:(考虑首尾特殊情况) 2 3 5 10 2 3 5 10 2 3 5 10 2 3 5 10 2 3 5 10 其实就是 2 3 5 10 2 3 5 10 从第1、2、3、4位开始往后数5个数。 然后根据动态规划的特点,将大问题转化为

weixin_43590021的博客 408

【洛谷】 P1063 能量项链 NOIP2006 区间dp

题目描述 在MarsMarsMars星球上,每个MarsMarsMars人都随身佩带着一串能量项链。在项链上有NNN颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是MarsMarsMars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收...

LeeCarry的博客 331

【区间dp】P1063 能量项链

一道区间dp的水题 题目链接 来快活啊! 思路 很简单的区间dp,思路和floyed差不多,就是需要把项链处理成环形 用$f[l][r]$表示以$a[l]$开头$a[r]$结尾的数串的最大和 转移方程: $$ f[l][r]=max(f[l][r],f[l][k]+f[k][r]+a[l] \cdot a[k] \cdot a[r]) $$ 代码 #include<iostream> ...

weixin_30343157的博客 171

【区间dp】洛谷P1063能量项链

原题链接 做个题和洛谷P1880做法类似,基本上是一个题 直接看代码注释 #include <bits/stdc++.h> using namespace std; const int N=205; int a[N]; int f[205][205]; int main() { int n; cin>>n; for(int i=1;i<=n;...

qq_44833767的博客 220

P1063 能量项链[区间DP]

题目来源:洛谷 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为...

weixin_30302609的博客 76
上一篇: P1508 Likecloud-吃、吃、吃(背包问题)
下一篇: P1156 垃圾陷阱 (动态规划)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值