题目:http://acm.hdu.edu.cn/showproblem.php?pid=5534

题意:给你n个点,让你加上n-1条边使他变成一棵树,题目首先给你a[1] a[2].....a[n-1]代表度数为多少时的值,然后问你最大值是多少,n-1条边变成一棵树

思路:这个题首先限制了只能用n^2以下的算法,我们看这个题首先给的东西都是与度数有关,我们建造一棵树度数总和肯定是2*(n-1)

我们其实只要把这个度数当作钱,然后购买相应的商品就可以了,但是你可能买相同的边,有些点你就会没买到造成不是一棵树

这个时候我们就有一个前提,保证是一颗树,那么我们怎么弄呢,我们先保证每个点度数初值为1,所以我们还能用的度数就变成了n-2,然后初值设为n*a[1];

我们推导式因为我们初度数为1,所以我们要添加i度的时候,我们应该删掉原来的度数1然后再加上i+1的度数值

即:f[j]=max(f[j],f[j-i]+a[i+1]-a[1]);

#include<bits/stdc++.h>
#define mod 1000000007
#define maxn 100005
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
ll n;
ll f[maxn],d[maxn],a[maxn];
int main(){
int t;
scanf("%d",&t);
for(int k=;k<t;k++){
cin>>n;
for(int i=;i<=n-;i++) cin>>a[i];
memset(f,,sizeof(f));
f[]=n*a[];
for(int i=;i<=n-;i++){
for(int j=i-;j<=n-;j++){
f[j]=max(f[j],f[j-i+]+a[i]-a[]);
}
}
printf("%lld\n",f[n-]);
}
}

最新文章

  1. ASP.NET Core 中文文档 第三章 原理(15)请求功能
  2. mybatis笔记1 基本的配置和操作
  3. jQuery解决iframe高度自适应代码
  4. java-cef系列视频第二集:搭建开发环境
  5. LOD设置
  6. [设计模式] javascript 之 工厂方法模式
  7. iOS: FFMpeg编译和使用问题总结
  8. 【云计算】docker daemon如何提供Restful的API
  9. linux扩大swap交换空间
  10. Matlab与微积分计算
  11. 在jsp中的css
  12. #include &lt;string&gt;
  13. 3DShader之立方体环境映射(cubic environment mapping)
  14. 用Winrar批量解压缩有密码文件方法,只需输入一次密码
  15. SQL基本用法-行转列
  16. L1-046 整除光棍
  17. HMM拓扑与转移模型
  18. 团队NABCD
  19. google中guava类库:AsyncEventBus
  20. 使用web api开发微信公众号,调用图灵机器人接口(二)

热门文章

  1. printf 输出格式设置\033[47\033[5m 与-8.8s
  2. 系统的重要文件/etc/inittab被删除了--急救办法!
  3. 83、Tensorflow中的变量管理
  4. Oracle 表空间详解
  5. upc组队赛12 Cardboard Container【枚举】
  6. oracle知识博客链接
  7. C# winform 动态操作webService
  8. 33-python基础-python3-列表插入元素-insert()方法-append()方法-extend()方法
  9. IIS 承载的服务失败
  10. subst - 替换文件中的定义