cjy基础动态规划
P2219 [HAOI2007]修筑绿化带
对于一个nm的矩形空间内,然后选择一个ab的矩形加上它所在部分的权值,然后在内部再选择一个c*d的矩形,然后减去它的权值和,求解最大的权值。
首先我们可以通过枚举求得所有右下角对应位置的矩形大小内的权值和,然后我们要求的就是另一个矩形范围内的权值最小值,这样我们就把问题转化为了求解所有等大小矩形范围内的最小值,那么有一个经典的单调队列技巧可以解决这个问题,在两维上分别处理最小值。
P3943 星空
对于给定01串,有k个地方是0,然后可以选择m种长度区间取反,求解最小需要多少次能够将整个01串变成1。
k<=8,m<=64
首先区间问题难以处理,我们先差分将区间操作转化为两个点反转,然后关注两个操作点之间的距离,发现可以加减,然后我们不能枚举所有2^n但是这个问题,因为值域范围很小,所以可以背包,然后求解产生某个长度的最小次数。
然后对于可加可减可以将负的值也作为物品来处理。
最后对于每一个状态,我们需要进行状压dp,每次一定是将某两个点一起消除,或者单点消除,我们已经获得了对应的花费就可以dp了。