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;
}
Proteus下载安装快速入门:30分钟掌握全过程 手把手教你完成proteus下载安装,从环境配置到首次运行一气呵成,适合电子设计新手快速掌握仿真工具的核心操作步骤。 阅读详情

相关推荐

Android 音频源码分析——AudioTrack设备选择

Android 音频源码分析——AndroidRecord录音(一) Android 音频源码分析——AndroidRecord录音(二) Android 音频源码分析——AndroidRecord音频数据传输流程 Android 音频源码分析——audioserver启动 Android 音频源码分析——AudioFlinger Android 音频源码分析——AudioTrack设备选择 基于Andorid9.0源码 以AudioTrack为例,梳理下输出设备选择流程。 音频设备选择的影响因素: Au

奋斗的菜鸟ing 3970

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

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

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

eLabRadio软件无线电虚实结合仿真开发平台简介

在使用仿真平台时,不要关闭设备或断开设备与PC机之间的网络连接,否则,仿真平台将无法正常工作。注:采用eNodeX设备认证方式,当出现“设备不存在”的报错时,请检查计算机IP是否和硬件设备IP处于同一网段,或者是否是先连接好网线,再开启硬件设备的。①此登录方式下,需要先建立软件与硬件的通信:在登录窗口点击【网络配置】,参照下图输入设备IP,服务器地址无需设置,设置完成后点击确认,此时登录界面无需设置账号密码;,拷贝到电脑上,使用管理员权限运行setup.exe,下一步直到安装完成,桌面会生成快捷方式。

weixin_55349105的博客 6318

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

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

cqbz_lanziming的博客 434

从EXIF到测绘:解码大疆影像元数据的实战应用指南

本文深入解析了大疆无人机影像元数据的实战价值,重点阐述了如何利用EXIF和XMP中的GPS、RTK、姿态角及相机内参等关键信息,提升测绘、三维重建及精准农业等项目的成果精度与效率。通过自动化质检脚本与行业应用场景剖析,指导从业者将元数据从信息转化为生产力,实现从拍照到专业测绘的跨越。

dell8的博客 526

蓝桥杯历年真题分类汇总(史上最全版本,一定不要错过)

天再高又怎样,踮起脚尖就更接近阳光。 满满的 题型总结​ 历年真题​ 视频讲解​ 比赛技巧 题型总结 2021 2020 2019 2018 2017 2016 2015 2014 2013 ...

m0_58367586的博客 11万+

dp NOIP2006提高 能量项链

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

QAQ 619

在MATLAB产生正态(Gauss)分布随机数

在 MATLAB 中内置了有产生标准正态(Gauss)分布的随机数函数,使用方法如下: 其中 为产生矩阵的行数和列数, 为产生矩阵的个数,产生的矩阵中的每个元素均为服从 N(0,1)N(0, 1)N(0,1) 的标准正态分布的元素。使用如下命令产生一个 的服从的随机数矩阵: 绘制图像效果如下: 可以看到这里随机数服从 的标准正态分布。假设 X∼N(0,1)X\sim N(0,1)X∼N(0,1),则 3X+33X+33X+3 服从 N(3,9)N(3,9)N(3,9) 分布,因此我们要产生服从 N(

程序必须为人类阅读而编写,并且仅仅碰巧可以让机器执行 3万+

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

复合材料仿真PAM-COMPOSITE 全工艺案例实操参数模板

复合材料仿真PAM-COMPOSITE 全工艺案例实操参数模板

源代码杀手的博客 275

万字长文带你由浅入深夯实ARM汇编基础——汇编指令及寻址方式最全梳理(附示例)!

见到汇编就害怕?读完这篇,扫除汇编拦路虎!!(示例丰富,可做手册,随手查阅!)

车载系统攻城狮 1万+

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

soj 11600 Pick It

gwq5210的专栏 1206

Python爬虫:抓取交通工具班次数据(公交、地铁等时刻表)

然而,由于这些信息并不总是以开放的API形式提供,因此爬虫技术成为了获取和分析这些数据的有效途径。然而,由于很多公交公司没有公开API,通常我们通过抓取其网页中的时刻表数据来获取信息。通过这些步骤,您可以轻松抓取交通工具的班次信息,并进行进一步的数据分析,辅助交通规划和出行推荐系统的建设。在这篇文章中,我们将演示如何使用Python爬虫技术抓取公交、地铁等交通工具的班次和时刻表数据。我们可以将公交和地铁的数据合并,进行综合分析。我们可以进一步分析地铁班次的发车频率,甚至可以比较不同地铁线路的班次。

2201_76125261的博客 954

区间背包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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

一道区间 dp 的板子题。

Popandsoss2022的博客 1036

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

ccql's Blog 1967

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

洛谷 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、付费专栏及课程。

余额充值