J. Abstract Painting(状压dp)
题意
给定n,在x轴[0,n]范围内画半径不超过5的圆,圆心在x轴上,要求任意两个圆不相交(可以相切),且已有固定的k个圆,求满足条件的画法方案数。
分析
很明显从dp的角度思考,一开始考虑区间dp,但是总状态数 O ( n 2 ) O(n^2) O(n2) ,转移 O ( n ) O(n) O(n),总复杂度 O ( n 3 ) O(n^3) O(n3),超时。
于是从线性dp的角度考虑,发现因为圆的半径小于等于5,因此某一点的情况只对从这一点往后10个点有后效性,也就是说可以用状态压缩的方法记录前10个点是否在某个圆内 ( 2 10 ) (2^{10}) (210),同时枚举所有以某点为右界的圆的方案数( 2 5 2^5 25)进行转移。状态数 O ( 2 10 ⋅ n ) O(2^{10}·n) O(210⋅n),转移复杂度 O ( 2 5 ) O(2^5)