题目描述:n个节点度数之和为n-2,每个节点预分配了1个度,任意分配度数是否有可能形成树?

从1到n节点,考虑树的形状,考虑分配给当前节点i的度数,并且注意到当前节点的度数不会影响其他节点(之前或者之后),因为之前先给每个节点分配1度的度数,然后n个节点度数之和确定,从1到n考虑,每个节点都有分配到0到n-2的度数的可能,还有n个节点的度数之和的为n-2的限制(某个节点分配到0个度,说明是叶子)。

求在y1+y2+.....+y[n-2]=(n-2)的条件下,F[y1]+F[y2]+.....F[y[n-2]]的最大收益;

其中xi代表i度的有几个,f[i]代表i度的收益;

将n-2个度分为n份,可以想象一条长度为n-2的线段,切成n段,获得的收益为F[len],求收益最大?每段的长度的取值范围为0到n-2,那么可以这样考虑,最优情况下,一厘米长度的有几个?2厘米长度的有几个?3厘米长度的有几个?......n-2厘米长度的有几个?

数学形式为在x1+x2+....+x[n-2]=(n-2)的条件下,求x1*f[1]+x2*f[x2]+...x[n-2]*f[n-2]的最大值?

其次还需处理线段长度合并时权值的变化,消除的思想。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#define maxn 2200
#define inf 0x3f3f3f3f3f3f
using namespace std;
int T,n,f[maxn]; //f代表石子的重量
int d[maxn];
int f1;
void init()
{
for(int i=;i<maxn;i++)
d[i]=-inf;
d[]=;
}
void solve() //可以理解成切线段
{
int ans=n*f1;
for(int i=;i<=n-;i++) //度数为i的有多少个
{
for(int j=i;j<=n-;j++)
{
if(d[j-i]+f[i] > d[j] )
{
d[j]=d[j-i]+f[i];
}
}
}
ans+=d[n-];
printf("%d\n",ans);
} int main()
{
// freopen("test.txt","r",stdin);
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
scanf("%d",&f1);
for(int i=;i<=n-;i++)
{
scanf("%d",&f[i]);
f[i]-=f1;
}
init();
solve();
}
return ;
}

最新文章

  1. BZOJ 3784: 树上的路径
  2. Spring实现IOC
  3. 干货 | Docker文件系统的分层与隔离
  4. matlab取整 四舍五入
  5. 【Junit】JUnit-4.12使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
  6. 外观模式/facade模式/结构型模式
  7. yum只下载而不安装软件包?
  8. uva 10771
  9. mvc Web api 如何在控制器中调用
  10. C语言嵌入式系统编程修炼之二:软件架构篇
  11. String的构造函数、析构函数和赋值函数
  12. js的逆向解析
  13. 栈-&gt;栈的基本定义
  14. JAVA核心技术I---JAVA基础知识(数据结构基础)
  15. 运行pytorch代码遇到的error解决办法
  16. python之字符编码(三)
  17. Spring+Druid+SpringMVC的搭建(附Demo)
  18. HDU 1686 Oulipo / POJ 3461 Oulipo / SCU 2652 Oulipo (字符串匹配,KMP)
  19. 1009 Product of Polynomials (25)(25 point(s))
  20. IOS视频播放器的制作

热门文章

  1. Enchantress(hdu 3922)
  2. 关于如何使用Spring里@AliasFor注解进行注解的封装
  3. msp430入门编程30
  4. 从零开始写STL—set/map
  5. 3469 [POI2008]BLO-Blockade
  6. 学习日常笔记&lt;day13&gt;jsp加强
  7. 设置eclipse默认用户名
  8. Ubuntu 16.04安装Guake Terminal终端(使用一键唤醒功能)
  9. foobar2000播放dff格式音乐的解决办法
  10. 使用mysql-connector-java.jar连接MySql时出现:Error while retrieving metadata for procedure columns: java.sql.SQLException: Parameter/Column name pattern can not be NULL or empty.