题意
给定$n$和$d$,构造一颗$n$个节点的二叉树(以$1$为根),所有节点到$1$的距离和为$d$,不行输出$NO$,否则输出$YES$和$2$-$n$的父亲编号
分析
最大和显然是一条链,如果最大和仍小于$d$,则不行,否则先构造出一条链,然后枚举当前的层数,如果当前层数的下一层仍然可以填,则将链的尾端放置在下一层可得到最大的变化,如果这个变化大于所需要的变化,则找到挂置的层数,否则则挂在下一层,若下一层已满,则将所枚举层数下移
1 |
|
题意
给定$n$和$d$,构造一颗$n$个节点的二叉树(以$1$为根),所有节点到$1$的距离和为$d$,不行输出$NO$,否则输出$YES$和$2$-$n$的父亲编号
分析
最大和显然是一条链,如果最大和仍小于$d$,则不行,否则先构造出一条链,然后枚举当前的层数,如果当前层数的下一层仍然可以填,则将链的尾端放置在下一层可得到最大的变化,如果这个变化大于所需要的变化,则找到挂置的层数,否则则挂在下一层,若下一层已满,则将所枚举层数下移
1 | #pragma GCC optimize(3, "Ofast", "inline") |