NOIP 模拟 20/11/03

A

首先有 b ≤ a − 2 b\le a-2 ba2
归纳证明
两颗子树,合并时最多多出两个根要么减少一个 1 1 1 度点
要么增加一个 3 3 3 度点,故 b ≤ a − 2 b\le a-2 ba2
然后有 b ≠ a − 3 b\neq a-3 b=a3
我们知道 ∑ d i = 2 ( n − 1 ) = 3 × ( a − 3 ) + a + ∑ i = 1 c d i = 2 ( 2 a − 4 + c ) \sum d_i=2(n-1)=3\times (a-3)+a+\sum_{i=1}^cd_i=2(2a-4+c) di=2(n1)=3×(a3)+a+i=1cdi=2(2a4+c)
∑ i = 1 c d i = 2 c + 1 \sum_{i=1}^cd_i=2c+1 i=1cdi=2c+1 其中 d i ≠ 1 , 3 d_i\neq 1,3 di=1,3,而这是不可能的

B

d p i , u = max ⁡ ( u × k , ∑ j d p i − 1 , j 6 + 1 ) dp_{i,u}=\max(u\times k,\frac{\sum_j dp_{i-1,j}}{6}+1) dpi,u=max(u×k,6jdpi1,j+1)
容易发现, d p dp dp 数组是递增的,每个数有一个不取 u × k u\times k u×k 的时间
倍增出这个时间就可以了 O ( 6 × T log ⁡ n ) \mathcal{O}(6\times T\log n) O(6×Tlogn)

C

二分答案,每个点维护 d p i dp_i dpi 表示边的最少个数

D

整除分块 O ( n 0.75 ) \mathcal{O}(n^{0.75}) O(n0.75)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值