
Codeforces Round #384 (Div. 2)D - Chloe and pleasant prizes 树形dp
题意
给你一棵树,让你找到其中的两个子树,使得子树和最大。
要求子树不相交。
题解
树形dp,dp[i]表示以i为根的子树里面存在的子树最大值是多少
记录最大值和次大值,俩加起来就是最大的。
Codeforces Round #384 (Div. 2) E. Vladik and cards 状压dp
题意
给你n个数字,你需要找到一个最长的子序列,满足以下要求:
1.对于每个i和j,要求abs(num[i]-num[j])<=1,num[i]表示这个数字i出现的次数
2.所有相同的数字应该挨在一起。
求最长的子序列长度
题解
枚举每个数字的长度num,那么显然每个数字要么是num,要么就是num+1
然后我们对于每个长度进行check就好了
dp[i][j]表示当前状态为i的时候,其中有i个数的长度为num+1,用一个next进行转移就好了
next[i][j][k]表示从i开始,j出现k次的位置是啥位置。
题意
给你一棵树,让你找到其中的两个子树,使得子树和最大。
要求子树不相交。
题解
树形dp,dp[i]表示以i为根的子树里面存在的子树最大值是多少
记录最大值和次大值,俩加起来就是最大的。
Codeforces Round #384 (Div. 2) E. Vladik and cards 状压dp
题意
给你n个数字,你需要找到一个最长的子序列,满足以下要求:
1.对于每个i和j,要求abs(num[i]-num[j])<=1,num[i]表示这个数字i出现的次数
2.所有相同的数字应该挨在一起。
求最长的子序列长度
题解
枚举每个数字的长度num,那么显然每个数字要么是num,要么就是num+1
然后我们对于每个长度进行check就好了
dp[i][j]表示当前状态为i的时候,其中有i个数的长度为num+1,用一个next进行转移就好了
next[i][j][k]表示从i开始,j出现k次的位置是啥位置。
