摘要:
CSDN同步 原题链接 朴素动态规划。 用 \(f_{i,j}\) 表示前 \(i\) 种 蚂蚁选了 \(j\) 种 的方案数。类似背包。 首先不考虑个数限制, \(f_{i,j} = f_{i-1,j} + f_{i,j-1}\). 这样完成了多重背包的效果(就是 \(f_i\) 的那一行在不断滚 阅读全文
摘要:
CSDN同步 原题链接 多重背包板子。具体可以参考 再谈单调队列优化 & 背包九讲. 这里再仔细讲一下二进制拆分的具体做法。 假设你有 \(7\) 个价值为 \(v_i\),重量为 \(w_i\) 的物体。现在考虑把多重背包变成 \(01\) 背包。如果我们把 \(1\) 个这样的物体看做第一组,\ 阅读全文
摘要:
CSDN同步 原题链接 首先声明:\(\text{POJ}\) 数据出错,搞成了“一开始在 \(1\) 或 \(2\) 棵树都可以”,导致错误。事实上本题解可以通过。 听说还有一维 \(\text{dp}\) 的啊,相当厉害,可我只会三维的。 考虑令 \(f_{i,j,1/2}\) 表示第 \(i\ 阅读全文
摘要:
CSDN同步 原题链接 这题有点套路。我一开始的想法是用 \(f_{n,i}\) 表示最大幂次最多为 \(2^i\) 表示 \(n\) 的方案数。然后发现 \(\mathcal{O}(1)\) 转不了。于是废了。 考虑用 \(f_i\) 表示 \(i\) 的答案数。分类讨论。 \(i\) 为奇数时, 阅读全文
摘要:
CSDN同步 原题链接 考虑枚举所有情况:最多 \(10 ! = 3.6 \times 10^6\) 种情况。考虑用 \(\mathcal{O}(n)\) 的时间计算出一个长度为 \(n\) 的序列按照此规则合并后的答案。这样不超过 \(3.6 \times 10^7\) 计算可以通过。 \(n=2 阅读全文
摘要:
CSDN同步 原题链接 题目不难。 肯定考虑宽搜。 首先搞定一个事实:一个格子不会重复走。如果可以重复走,则必然有可以替代它的不重复走的不劣的方案。很明显:如果你走到一个格子又 可以不 走回来,那就有了替代方案;如果你走到一个格子又 不得不 走回来,那就不走这 \(2\) 步,也有了替代方案。因此, 阅读全文
摘要:
CSDN同步 原题链接 其实这题不难。考虑直接搜索所有情况,最多有 \(4^{10} = 1048576\) 种可能的走法,因此深搜即可简单解决问题。注意到需要数组的变化,因此,如果要用宽搜的话很可能记录状态不方便(直接内存炸掉?),深搜传数组是个很好的选择。 注意几个点: 如果某个方向第一个就是个 阅读全文
摘要:
CSDN同步 原题链接 简要题意:略。 考虑一个位置的最大不满意度,就是在 \(t\) 的时间内,有 \(\lfloor \frac{t}{x} \rfloor\) 个选手间隔 \(x\) 时间开始比赛,于是其不满意度为 \(\lfloor \frac{t}{x} \rfloor\). 不妨设 \( 阅读全文
摘要:
CSDN同步 这一节我们试图解决这样一个问题: 给定一个长度为 \(n\) 的串 \(s\),求其最长回文子串。\(n \leq 10^7\). 大体分析 貌似有 \(n^2\) 个供选择的子串,于是似乎很难有线性的做法。 算法一 暴力 $\mathcal 比较屑。把 \(n^2\) 个子串枚举出来 阅读全文
摘要:
CSDN同步 原题链接 简要题意:略。 数据范围:\(1 \leq n,k \leq 10^9\). 考虑一个事情。这玩意儿必定满足,上面方阵的集合里有的,下面没有。左边有的,右边没有;也可以都有。问题不大。 于是我们可以独立地看待各个元素的情况。 对于 \(\forall \space [1,k] 阅读全文