随笔分类 - 动态规划
摘要:链的部分分 我们设f[i]表示以i结尾的括号序列有多少个,那么i的实际答案就是f的前缀和 显然,所有左括号和不能匹配的右括号的f均为0 对于每一个能匹配的右括号i,我们找到与之匹配的左括号p,以i结尾的括号序列就是以p-1结尾的括号序列加上p~i这段序列。所以f[i]=f[p-1]+1。 时间复杂度
阅读全文
摘要:n <= 10 爆搜即可 n <= 50 什么乱搞 n <= 400 有一个 的 dp 设 dp[i][j] 表示最后一段为 j+1~i 时的最小值 直接三层循环转移即可 dp[1][0] = 0; for(int i = 1;i <= n;i ++) { dp[i][0] = qi[i
阅读全文
摘要:1 :长链剖分的构造 推荐先行学习重链剖分 与重链剖分类似,我们设一个节点中深度最深的子节点为长节点,设该节点到长节点的边为重边,其他边为轻边 然后我们把首尾相连的重边组成长链,落单的一个节点也被视作一条长链 我们就把树分成了若干条互不相交的长链 2:长链剖分的性质 树上所有长链长度和为n 互不相交
阅读全文