【解题报告】[动态规划] RQNOJ PID5 / 能量项链
原题地址:http://www.rqnoj.cn/problem/5
解题思路:
今天刚刚才知道了区间DP。。Orz。。本来以为是状态压缩DP,后来看到数据量才发现原来不是。后来参考了别人的题解。自己整理了思路:
问题现在变成从一堆数里面按某个顺序取走一些数,每次取走一个数的时候会得到能量,求最大能获得的能量。
由于是环状的,先将序列延长一倍,第n个数字等于第0个数字,第n+1个数字为第1个数字...依次类推。
a[i]表示第i个数
状态表示:
DP[i][j]表示在区间[i,j]中,除了a[i]之外的其他数都取走的最大的能量。(即最后留下的数是a[i])那么最后要求的答案就是假设最后剩下的是a[i](0<=i<n)这n中情况中的的最大值。
初始状态:DP[i][j]=0。
状态转移方程:DP[i][j]=max{ a[i]*a[k+1]*a[j+1]+DP[i][k]+DP[k+1][j] } (i<=k<j)
解题代码:
#include<stdio.h>
#include<iostream>
using namespace std;
int a[],dp[][]={};
int Max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
a[i+n]=a[i];
}
for(j=;j<*n-;j++)
{
for(i=j;i>j-n&&i>=;i--)
{
for(k=i;k<j;k++)
{
dp[i][j]=Max(a[i]*a[k+]*a[j+]+dp[i][k]+dp[k+][j],dp[i][j]);
}
}
}
int ans=;
for(i=;i<n;i++)
{
ans=Max(ans,dp[i][i+n-]);
}
printf("%d\n",ans);
return ;
}
【解题报告】[动态规划] RQNOJ PID5 / 能量项链的更多相关文章
- 【原创】POJ 1703 && RQNOJ 能量项链解题报告
唉 不想说什么了 poj 1703,从看完题到写完第一个版本的代码,只有15分钟 然后一直从晚上八点WA到第二天早上 最后终于发现了BUG,题目要求的“Not sure yet.”,我打成了“No s ...
- [置顶] 刘汝佳《训练指南》动态规划::Beginner (25题)解题报告汇总
本文出自 http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner 打开 这个专题一共有25题,刷完 ...
- Luogu 1063 能量项链(动态规划)
Luogu 1063 能量项链(动态规划) Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某 ...
- vijos & codevs 能量项链 - 动态规划
描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于 ...
- NOIP 2006 解题报告
第一题: 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...
- 区间DP小结 及例题分析:P1880 [NOI1995]石子合并,P1063 能量项链
区间类动态规划 一.基本概念 区间类动态规划是线性动态规划的拓展,它在分阶段划分问题时,与阶段中元素出现的顺序和由前一阶段的那些元素合并而来由很大的关系.例如状态f [ i ][ j ],它表示以已合 ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 【NOIP2015】提高day2解题报告
题目: P1981跳石头 描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N ...
- 【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】
目录:1.潜伏者 [map] 2.Hankson的趣味题[数论]3.mayan游戏[dfs] 题目: 1. 潜伏者(spy.pas/c/cpp)[问题描述]R 国和S 国正陷入战火之中,双方都互派间谍 ...
随机推荐
- Javascript 正则表达式笔记2
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- SQL Server 脚本
创建数据库: --创建数据库 CREATE DATABASE Accounting -- 新数据库的名称 ON --主文件 ( NAME = 'Accounting', --文件名 FILENAME ...
- WCF分布式开发步步为赢(10):请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back).
WCF除了支持经典的请求应答(Request-Reply)模式外,还提供了什么操作调用模式,他们有什么不同以及我们如何在开发中使用这些操作调用模式.今天本节文章里会详细介绍.WCF分布式开发步步为赢( ...
- C# 使用WIN32API设置外部程序窗口无边框
使用代码 var wnd = win32.FindWindowA(null, "窗口标题"); Int32 wndStyle = win32.GetWindowLong(wnd, ...
- Unsupported major.minor version 51.0(jdk版本错误)
解决方案: 步骤一: 在“项目”点右键->选择Perperties->在出现的菜单中选择Java Compiler->最上面选中Enable project Specific set ...
- Android核心分析之十五Android输入系统之输入路径详解
Android用户事件输入路径 1 输入路径的一般原理 按键,鼠标消息从收集到最终将发送到焦点窗口,要经历怎样的路径,是Android GWES设计方案中需要详细考虑的问题.按键,鼠标等用户消息 ...
- Qt 显示图片 放大 缩小 移动(都是QT直接提供的功能)
本文章原创于www.yafeilinux.com 转载请注明出处. 现在我们来实现在窗口上显示图片,并学习怎样将图片进行平移,缩放,旋转和扭曲.这里我们是利用QPixmap类来实现图片显示的. 一.利 ...
- 打印TMemo的内容到打印机
Canvas.TextOut真是好用,Printer也实在好用: procedure PrintTStrings(Lst : TStrings) ; var I, Line : Integer; be ...
- Sqlstate解释
本篇文章主要介绍了"Sqlstate详解",主要涉及到方面的内容,对于DB2感兴趣的同学可以参考一下: 根据 X/Open 和 SQL Access Group SQL CAE 规 ...
- MySql存储引擎特性对比
下表显示了各种存储引擎的特性: 其中最常见的两种存储引擎是MyISAM和InnoDB 刚接触MySQL的时候可能会有些惊讶,竟然有不支持事务的存储引擎,学过关系型数据库理论的人都知道,事务是关系型数据 ...