ARC083C Bichrome Tree
题意:给出一棵
点可以染成黑白两色之一,且可以赋予一个自然数权值。
需要使得每个点
判定是否存在一组符合要求的染色方案。
先考虑最稳健的布尔
记
转移时,记
对于直接儿子
在每个儿子处选一个二元组,然后加起来,记为
最后
由于合法约束形如
对于同一颗子树,若
于是,可以将状态改为:
现在问题相当于:给出若干个对子,可以选择翻转其中的一些,需要使得左侧权值和
注意到两侧的和是固定的,故只需左侧的和尽量大。跑 01
背包即可。
利用 std::bitset
,复杂度可以做到