博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FZU2177(dp)
阅读量:6333 次
发布时间:2019-06-22

本文共 935 字,大约阅读时间需要 3 分钟。

 

传送门:

题意:有n个***(不能调换顺序),可以组成x(x<n)个炸弹,每个炸弹的威力为该组的(max-min)^2,现在给出n个***的威力值,求能组成所有炸弹的最大威力和。

分析:dp[i]表示前i个***组成的炸弹最大威力和,则状态转移方程为dp[i]=max(dp[i],dp[j-1]+(a[i]-a[j])^2)(1<=j<=i)。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define mod 100000000#define inf 0x3f3f3f3f#define eps 1e-6#define N 1010#define FILL(a,b) (memset(a,b,sizeof(a)))#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define PII pair
using namespace std;int dp[N],a[N];int main(){ int n; while(scanf("%d",&n)>0) { for(int i=1;i<=n;i++)scanf("%d",&a[i]); FILL(dp,0); for(int i=1;i<=n;i++) { for(int j=i;j>=1;j--) { dp[i]=max(dp[i],dp[j-1]+(a[i]-a[j])*(a[i]-a[j])); } } printf("%d\n",dp[n]); }}
View Code

 

转载于:https://www.cnblogs.com/lienus/p/4288126.html

你可能感兴趣的文章
Ubuntu系统终端环境支持中文的方法
查看>>
docker构建私有仓库
查看>>
2018/12/31抓取装置投运前两天的电流数据来判断通讯情况
查看>>
Android获得手机UserAgent的源码
查看>>
职场人必备:工作述职报告PPT模板
查看>>
华为认证让你的实习工资比别人高出一截
查看>>
hcl安装出现的问题
查看>>
Netty源码之ChannelPipeline和ChannelHandlerContext
查看>>
【读书分享】流血的仕途
查看>>
Enable DB Query in HUE web UI
查看>>
windows服务器网络群集
查看>>
TCP连接状态详解
查看>>
phpmyadmin网页版数据库的管理
查看>>
自定义组件进阶之一
查看>>
学生时代的结束,工作的开始
查看>>
Linux下处理由window上传zip解压后文件(夹)名的乱码问题
查看>>
java笔记:第8章 异常
查看>>
python制作galgame引擎(六)
查看>>
java-第五章-while-输入1~7,输入0结束循环,输出英文星期的缩写
查看>>
我的友情链接
查看>>