摘要: " bzoj4033 ,懒得复制,戳我戳我" Solution: 定义状态$dp[i][j]$表示$i$号节点为根节点的子树里面有$j$个黑色节点时最大的贡献值 然后我们要知道的就是子节点到根节点这条边会计算次数就是:子树中白色节点数$ $子树外白色节点数$+$子树中黑色节点数$ $子树外黑色节点数 阅读全文
posted @ 2018-04-29 15:15 Ning_Mew 阅读(190) 评论(0) 推荐(0) 编辑
摘要: " bzoj4472 ,懒得复制,戳我戳我" Solution: 题面意思:从$1$号节点出发,每到一个节点就必须停下,获得节点权值(每个节点只会获得一次),每个点有个规定的停留次数,求最大可获得多大权值,并且判断是否只有唯一的路线才能获得这个权值 直接$dp$储存子树最大获得权值就行,顺便要记录方 阅读全文
posted @ 2018-04-29 15:15 Ning_Mew 阅读(206) 评论(0) 推荐(0) 编辑
摘要: " bzoj1864 ,懒得复制,戳我戳我" Solution: 其实想出来了$dp$方程推出来了最大值,一直没想到推最小值 $dp[i][1/0]$表示$i$号节点的子树中的绿色染色最大值,$1$表示该节点染色,$0$表示该节点不染色 $$dp[i][1]=dp[ls][0]+dp[rs][0]+ 阅读全文
posted @ 2018-04-29 15:14 Ning_Mew 阅读(145) 评论(0) 推荐(0) 编辑
摘要: " bzoj1190 ,懒得复制,戳我戳我" Solution: 这道题其实是一个背包(分组背包),但是由于数字比较大,就要重新构造dp式子。啃了三天才懂。 $dp[i][j]$表示背包容积为$j 2^i$时的最大价值。 首先,因为每一个物品一定是$a 2^b$,我们可以按照$b$值先按照普通的分组 阅读全文
posted @ 2018-04-29 15:14 Ning_Mew 阅读(170) 评论(0) 推荐(0) 编辑
摘要: "懒得复制,戳我戳我" Solution: 傻逼题目,直接dp就可以了,他是求最后一次的最大值 Code: cpp //It is coded by Ning_Mew on 4.17 include using namespace std; const int maxn=55,maxl=1000+7 阅读全文
posted @ 2018-04-29 15:14 Ning_Mew 阅读(159) 评论(0) 推荐(0) 编辑
摘要: "懒得复制,戳我戳我" Solution: $dp[i][j][k]$以$i$为子树根节点,到根节点中有$j$条公路没修,$k$条铁路没修,存子树不便利和 $dp[i][j][k]=min(dp[ls][j 1][k]+dp[rs][j][k] , dp[ls][j][k]+dp[rs][j+1][ 阅读全文
posted @ 2018-04-29 15:14 Ning_Mew 阅读(292) 评论(0) 推荐(0) 编辑