1. 程式人生 > >HDU 5534 完全背包

HDU 5534 完全背包

size const set src include sin blog () 題目

技術分享圖片

題目把Partial 都搬出來了,其實是有這樣的定理,說一個長度為n-2的序列,(1~n)一定可以對應一棵樹。

技術分享圖片

叉姐的思路:

其實也可以看成完全背包。

n-2個度的分派,每種度是一個物品,而且可以選很多次——完全背包了

然後要減去f(1),首先是默認的度都為1.

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 2020;
int f[MAXN];
int d[MAXN];



int main()
{
    //freopen("in.txt","r",stdin);
int T_T; scanf("%d",&T_T); while(T_T--) { int n; scanf("%d",&n); for(int i = 1; i <= n-1; i++) scanf("%d",&f[i]); memset(d,-1e9-7,sizeof(d)); d[0] = n*f[1]; for(int i = 1; i <= n-2; i++) { for
(int j = 0; j <= n-2; j++) { if(j>=i) d[j] = max(d[j],d[j-i]+f[i+1]-f[1]); } } cout<<d[n-2]<<endl; } return 0; }

HDU 5534 完全背包