思路详解:
考虑 d p dp dp,设状态 f l , r f_{l, r} fl,r 表示覆盖区间 [ l , r ] [l, r] [l,r] 所需的最少的放点次数,显然,答案是: f 1 , n f_{1, n} f1,n。
边界:对于任意一组 ( l , r ) (l, r) (l,r),如果 max ( a l , a r ) ≥ r − l + 1 \max(a_l, a_r) \ge r - l+ 1 max(al,ar)≥r−l+1,那么 f l , r = 1 f_{l, r} = 1 fl,r=1。同理,如果 j , k j, k j,k 满足: l ≤ j ≤ k ≤ r l \le j \le k \le r l≤j≤k≤r 且 j − a j + 1 ≤ l j - a_j + 1 \le l j−aj+1≤l 且 k + a k − 1 ≥ r k + a_k - 1 \ge r k+ak−1≥r,那么 f l , r = 2 f_{l, r} = 2 fl,r=2。
转移: f l , r = min ( f l , k + f k + 1 , r ) f_{l, r} = \min(f_{l, k} + f_{k+ 1, r}) fl,r=min(fl,k+fk+1,r), k ∈ [ l , r ) k \in [l, r) k∈[l,r)。