说好的好好写人话的题解

嗯很多题解都说过这是一个石子合并的模型它也确实就是一个石子合并的模型。然而就算这样我也不会写最后仍然写了个记忆化搜索

首先我们不论环状,就直接一条链型,当只剩下两个珠子的时候,合并的顺序肯定是唯一的,当三个珠子的时候,可能是{{1,2}3}这样的合并,也有可能是{{1}2,3}这样的合并,那么我们就是枚举在区间之中的一颗珠子,以它为断点,分别递归左右两边。【比如lf和rt是边界,i是断点,那么就是搜索lf-i,i+1-rt】,最后记得要加上左右两边珠子聚合的能量(lf的头标记*i+1的头标记*rt的尾标记)。边界条件就是当只剩下两颗珠子的时候。

链型的问题就解决啦!然而这道题是环形的

环形的拆成链型不就好了!

这里拆成链型有两种方法,一是枚举断开的位置分别DP打擂,另一种是复制一遍序列枚举开始点DP打擂。然而我觉得并没有什么区别

我用的是第二种方法,不知道第一种方法会不会TLE。

下附代码然而其实还是没有好好说话

 #include <algorithm>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std;
ifstream fin("energy.in");
ofstream fout("energy.out");
int lenght=,DG[][]={};
int li[][]={};//0头1尾
int DP(int lf,int rt);
int main(void)
{
fin>>lenght;
for(int i=;i<=lenght;i++)
{
fin>>li[i][];
if(i!=)li[i-][]=li[i][];
}
li[lenght][]=li[][];
for(int i=lenght+;i<=lenght*-;i++)
{
li[i][]=li[i-lenght][];
li[i][]=li[i-lenght][];
}
int ans=,t=;
for(int i=;i<=lenght;i++)
{
t=DP(i,i+lenght-);
ans=max(t,ans);
}
fout<<ans;
return ;
} int DP(int lf,int rt)
{
if(DG[lf][rt]!=)return DG[lf][rt];
if(rt==lf+)return li[rt][]*li[rt][]*li[lf][];
int tot=,as=;
for(int i=lf;i<rt;i++)
{
tot=DP(lf,i)+DP(i+,rt)+(li[lf][]*li[i+][]*li[rt][]);
as=max(tot,as);
}
DG[lf][rt]=as;
return as;
}

【NOIP2006提高组】能量项链的更多相关文章

  1. [NOIP2006] 提高组 洛谷P1063 能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  2. noip2006提高组题解

    第一题:能量项链 区间型动态规划 据说这题在当年坑了很多人. f(i, j) 表示从第i个珠子开始合并j个珠子所释放的最大能量. f(i, j) = max{ f(i, k} + f(i+k, j-k ...

  3. [NOIP2006] 提高组 洛谷P1066 2^k进制数

    题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...

  4. [NOIP2006] 提高组 洛谷P1064 金明的预算方案

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...

  5. [NOIP2006] 提高组 洛谷P1065 作业调度方案

    题目描述 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工序都有指定的加工时间. 每个工件的每个工序称为一个操作,我们用记号j-k表示一个 ...

  6. 【动态规划】Vijos P1313 金明的预算方案(NOIP2006提高组第二题)

    题目链接: https://vijos.org/p/1313 题目大意: m(m<=32000)金钱,n(n<=60)个物品,花费vi,价值vi*ci,每个物品可能有不超过2个附件,附件没 ...

  7. [洛谷] P1065 [NOIP2006 提高组] 作业调度方案

    点击查看代码 #include<bits/stdc++.h> using namespace std; const int N = 1e6 + 10; int m, n, ans = 0; ...

  8. TYVJ P1056 能量项链 Label:环状区间DP

    做题记录:2016-08-16 20:05:27 背景 NOIP2006 提高组 第一道 描述     在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头 ...

  9. tyvj 1056 能量项链 区间dp (很神)

    P1056 能量项链 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2006 提高组 第一道 描述     在Mars星球上,每个Mars人都随身佩 ...

随机推荐

  1. thinkphp空操作和配置文件实现简化路由

    1关于TP中空操作和路由问题 <?php function test(){ $content="test demo @云峰天下"; $pattern='/@(\S+)\s/' ...

  2. javascript eval和JSON之间的关系

    eval函数的工作原理 eval函数会评估一个给定的含有javascript代码的字符串,并且视图去执行包含在字符串里的表达式或者 一系列的合法的javascript语句.eval函数将把最后一个表达 ...

  3. java正则表达式验证标点符号

    统计标点符号个数 String str = "\""..,!,"; int count = 0; Pattern pattern = Pattern.compi ...

  4. 广播,多播,IGMP:网际组管理协议

    广播,多播,IGMP:网际组管理协议 1.概述      IP有三种地址:单播地址, 广播地址,多播地址.      广播和多播仅应用于UDP.      每个以太网帧包含源主机和目的主机的以太网地址 ...

  5. tastypie Django REST API developement 1)

    Read by linux/GNU commands Let's follow and start from here:http://django-tastypie.readthedocs.org/e ...

  6. Call U

    Communication - 02.Call U App层 从大拇哥Click CallButton开始手机便已明白,主人这是要打电话.当然,你可以选择直接拨号,也可以通过ContactList,或 ...

  7. SQL注入浅水攻防

    啥是SQL注入(SQL Injection) 所谓SQL注入就是把SQL命令插入到表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造 (或影响 ...

  8. [置顶] Objective-C编程之道iOS设计模式单例解析(2)

    上一篇文章,提到了单例子类化的问题.正好最近,我在Stack Overflow看见一位国外高人,也谈及了单例子类化的一些内容.思考之后,总结了一些内容.其大意是利用NSDirectory存储不同子类的 ...

  9. Ecshop出现问题 includes\lib_main.php on line 1329 includes\lib_base.php on line

    php 5.3版本兼容问题不少,以上函数参数传递问题可以将lib_main.php on line 1329这句 $ext = end(explode('.', $tmp)); 改为 : $extsu ...

  10. js处理层级数据结构的一些总结

    开发者对复杂的数据结构的处理能力也是体现开发者水平的一个度量吧...最近发现自己对一些嵌套数据结构.层级数据结构的处理能力不大足...经常被这些把自己绕晕...严重影响开发效率...就稍微低总结了一下 ...