说好的好好写人话的题解

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

首先我们不论环状,就直接一条链型,当只剩下两个珠子的时候,合并的顺序肯定是唯一的,当三个珠子的时候,可能是{{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. windows 服务器系统日志分析及安全

    一.利用Windows自带的防火墙日志检测入侵 下面是一条防火墙日志记录 2005-01-1300:35:04OPENTCP61.145.129.13364.233.189.104495980 200 ...

  2. 业务接口+UI层的设计(基于Castle实现的Repository)

    业务接口+UI层的设计(基于Castle实现的Repository) Repository层设计的文章见:[http://www.cnblogs.com/yomho/p/3297042.html]   ...

  3. 基本Guava工具

      使用Joiner类 将任意字符串通过分隔符进行连接到一起是大多程序员经常做的事情.他们经常使用array,list,iterable并且循环变量将每一个临时变量添加到StringBuilder当中 ...

  4. 分享个自己做的CSDN刷下载积分软件

    对于评论里有人反映说,运行完后自动关机了,我要在这解释下,不好意思了亲们,由于昨晚开这个通宵刷积分,就加了个功能,刷完所有可刷积分后自动关机省点电.今天发布的时候忘记取消了.这里给大家带来不便请大家包 ...

  5. MacOSX64位机器上gcc编译32位x264静态库

    x264最新包地址:http://www.videolan.org/developers/x264.html 编译命令: ./configure --enable-static --host=i386 ...

  6. LAMP编译安装遇到的问题

    apache安装 1, no SSL-C headers found configure: error: ...No recognized SSL/TLS toolkit detected 解决办法: ...

  7. codeforces 6A. Triangle

    A. Triangle time limit per test 2 seconds memory limit per test 64 megabytes input standard input ou ...

  8. Python爬虫小白入门(六)爬取披头士乐队历年专辑封面-网易云音乐

    一.前言 前文说过我的设计师小伙伴的设计需求,他想做一个披头士乐队历年专辑的瀑布图. 通过搜索,发现网易云音乐上有比较全的历年专辑信息加配图,图片质量还可以,虽然有大有小. 我的例子怎么都是爬取图片? ...

  9. C#基础知识——类的继承

    继承是C#的三大特性之一,它实现了多态性和代码复用 我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,单独的封装到一个类中,作为这些类的父类. Student.Teacher.Driv ...

  10. Hadoop学习之Ubuntu12.04 Hadoop 环境搭建笔记

    SSH无密码配置 Hadoop在Ubuntu12.04上搭建环境 报错及问题 SSH无密码配置 参考:Linux(Centos)配置OpenSSH无密码登陆 注意问题: Hadoop集成环境三台机器都 ...