摘要:
题意:给了一棵树以及每个节点的颜色,1代表黑,0代表白,求将这棵树拆成k棵树,使得每棵树恰好有一个黑色节点的方法数解法:树形DP问题。定义:dp[u][0]表示以u为根的子树对父亲的贡献为0dp[u][1]表示以u为根的子树对父亲的贡献为1现在假设u为白色,它的子树有x,y,z,那么有dp[u][1... 阅读全文
摘要:
题意:给你一些区间操作,让你输出最后得出的区间。解法:区间操作的经典题,借鉴了网上的倍增算法,每次将区间乘以2,然后根据区间开闭情况做微调,这样可以有效处理开闭区间问题。线段树维护两个值: cov 和 rev ,一个是覆盖标记,0表示此区间被0覆盖,1表示被1覆盖,-1表示未被覆盖, rev为反转标... 阅读全文
摘要:
题意:给n个矩形,求矩形周长并解法:跟求矩形面积并差不多,不过线段树节点记录的为:len: 此区间线段长度cover: 此区间是否被整个覆盖lmark,rmark: 此区间左右端点是否被覆盖num: 此区间分离开的线段的条数重点在转移的地方,不难理解。代码:#include #include #in... 阅读全文
摘要:
题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和。解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt].len[i]表示覆盖次数大于等于i的线段长度,以便求面积,最后只要每次都用tree[1].len[K... 阅读全文