【FZU 2177】 ytaaa (dp)
2015-08-22 16:31
399 查看
【FZU 2177】 ytaaa
n个炸药 可以把连续的炸药绑成炸药包 炸药包的威力是绑住的炸药里(最大威力-最小威力)^2
dp数组存储绑完i前所有炸药后的最大威力
把威力存入f数组
转移方程为 dp[i] = max(dp[j] + (Max(f[k])-Min(f[k]))^2) (i:1->n j:1->i-1 k:j+1->i)
代码如下:
n个炸药 可以把连续的炸药绑成炸药包 炸药包的威力是绑住的炸药里(最大威力-最小威力)^2
dp数组存储绑完i前所有炸药后的最大威力
把威力存入f数组
转移方程为 dp[i] = max(dp[j] + (Max(f[k])-Min(f[k]))^2) (i:1->n j:1->i-1 k:j+1->i)
代码如下:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; int a[1001];//炸药威力 int dp[1001]; int main() { int n,i,j,mn,mx; while(~scanf("%d",&n)) { memset(dp,0,sizeof(dp)); for(i = 1; i <= n; ++i) { scanf("%d",&a[i]); mn = mx = a[i]; for(j = i; j > 0; --j) { mn = min(mn,a[j]);//(j~i)最小威力 mx = max(mx,a[j]);//(j~i)最大威力 dp[i] = max(dp[j-1]+(mx-mn)*(mx-mn),dp[i]); } } printf("%d\n",dp ); } return 0; }
相关文章推荐
- UIViewController
- Judging Troubles(字典序)
- UI-UIImageView
- 九宫图
- 《深入Java虚拟机第二版》读书笔记
- mysqldump工具的使用
- 灰度变换增强
- iOS-万能跳转界面方法 (runtime实用篇一) 字数733 阅读1080 评论28 喜欢51
- 控制台传入字符串用逗号隔开,判断是否是回文
- LeetCode2.1.5(Median of Two Sorted Arrays)
- 算法实现的复杂度计算
- 洛谷1023 税收与补贴问题 解题报告
- poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】
- 基本套接字编程
- HDU 1028 Ignatius and the Princess III
- leveldb学习:Env
- POJ 1584 A Round Peg in a Ground Hole(是否凸包 && 圆是否在凸包内)
- 线程入门(一)
- java并发编程---synchronized、Lock
- 第七集 最优间隔分类器问题