A 欧几里得的噩梦
每一个数最多只有两个 \(1\),模拟线性基的插入过程,发现插入是一条链,没有之后连向 \(0\) 结束,拿并查集维护这条链,对于单个 \(1\),直接插入即可,两个 \(1\) 的检查两个 \(1\) 最后的位置是否一样,如果一样就不能插入,否则大到小连边。
B 清扫
对于一个不为叶子的节点,清除它的一个石头有两种方式,一种是子树内的两个叶子相连,这种路径的数量为 \(x\),一种是子树内的一个叶子和子树外的一个叶子相连,这种路径的数量为 \(y\)。
设 \(s_i\) 表示 \(i\) 子树内所有叶子的价值,有等式:
根据这个可以解出唯一的 \(x,y\),首先他们必须都为非负正数,其次对于 \(x\),它不能超过最大数量 \(min(\frac{s_i}{2},s_i-maxa_{leaf})\),如果有一个叶子超过总的一半,那么内路径最多只有 \(s_i-maxa_{leaf}\) 条。对于 \(y\) 来说,如果当前节点是根,则 \(y=0\),它没有外路径了。
C 购物
做法一:考虑判定怎样的一个 \(k\) 合法,有数在 \([k,2k]\) 范围内,小于 \(k\) 的数的和超过 \(k\),排完序后每个数能提供一个区间,每个前缀和能提供一个区间,然后就成了区间并的问题,差分后一遍扫描线即可。
做法二:还是先排序,考虑一个数加进来后会将答案怎样扩展,首先他可以提供的最大还是前缀和,最小就是 \(\frac{k}{2}\),观察是否和上一个前缀和有交,这样又成了一个区间并的问题,两种方法的本质是相同的。
D ants
permu 加强版,回滚莫队套可撤销并查集,不会链表。
标签:前缀,一个,路径,43,叶子,插入,区间,CSP,模拟 From: https://www.cnblogs.com/Ishar-zdl/p/18456940