黄文睿
221180115 计算机拔尖班
有一些同样长的小木棍,把这些木棍随意砍成几段。
现在,想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。
给出每段小木棍的长度,求原始木棍的最小可能长度。
可以分组确定:先确定第一组的组成,再是第二组的组成。
使用回溯算法,用 $S(S_1, S_2, \cdots, S_{i-1}, \lbrace b_1, b_2, \cdots, b_t\rbrace)$,表示已经确定了前 $i-1$ 组,第 $i$ 组已经选定了 $\lbrace b_1, b_2, \cdots, b_{t}\rbrace\subseteq S_i$ 这些元素。
则状态转移可以决定下一个 $b_{t+1}\in S_i$ 使得总和 $\le A$。
观察,可以 pre-compute 进行对搜索树的裁剪:
最大团问题:求图中的最大团的阶。
每个可行解是一个团 $V\subseteq G$。考虑在 $V$ 中加入一个顶点 $x$ 作为其非平凡邻居。