摘要:
一般的方法是记录状态是从哪儿转移来的然后递归输出。 但是明显递归有爆栈的危险。 所以可以用一个 (增加理解难度而实际没用的) 方法来避免。 具体来说,用一个vector保存答案。 例如这一题中,一般题解是用 来输出的,而我用了 来处理。 有什么用呢?增加代码长度与理解难度(笑) 阅读全文
摘要:
此题出自 IOI 1999 此题的难点在于: 1.如何满足题目所述的顺序问题; 2.如何记录转移状态。 首先考虑朴素算法。着眼于问题1,不难想到枚举第一朵花的位置,然后在这个位置左边枚举第二朵花的位置......依此类推。 思考这个模型,发现其搜索树的状态存在大量重叠,且此问题满足“最优子结构”,“ 阅读全文
摘要:
考虑朴素的搜索。对于树上每一个节点,状态只有选或不选。 而很明显:选了当前节点,儿子节点选不选都可以;而假如不选当前节点,就必须选儿子节点. 容易发现,这样产生的搜索树会有大量的重叠。于是考虑记忆化搜索。 使用一个数组d[cur][2]来记录当前节点选 (d[cur][1]) 或不选 (d[cur] 阅读全文