D

给出一个01序列中00 01 10 11的子序列数目
还原这个01序列

乱搞

首先可以由0011的数目来确定0和1的数目
进而知道0110的数目和
先将序列排列成0..01..1的形式,
此时01数目为$cnt_0cnt_1$,10数目为0
每将一个1左移1位,01将-1,10将+1
以每次将1移动到最左边为单位扫一遍来确定最终的串

E

一棵树问能否改变一条边使得某个点成为重心
输出每个点的情况

树形dp

显然,每个节点最多有一个子树的节点超过n/2
而将这课子树的一部分直接移到当前节点上
使得子树节点小于等于n/2,答案就会成立

我们进行两遍dfs
第一遍维护每棵子树可以去掉小于等于n/2的最大部分,并更新答案
第二遍更新以父亲节点作为子树的答案