04 2018 档案
摘要:这里 是针对这道题比较详细的讲解。 文章中指出的子问题是有例题的,具体见这里
阅读全文
摘要:单调栈例题,很早就搞懂了,但一直没有机会实现。 今天决定来实现一下,结果发现还是有很多细节要注意。(WA了两次) 方法的话百度单调栈就好了,我就不再重复了。 说一下容易错的的细节。 1.Long long。 2.最后要把栈内剩余矩形进行统计。可以采用push一个 高为0的矩形 来实现以减少代码长度。
阅读全文
摘要:有很多人都把这道题讲得很详细了,我就不再重复了。 要总结的是,这可以看作一种“边带权”的并查集,对于这种并查集我们可以另开数组记录边上的关系,然后在find和unite的同时对关系进行维护。 于是此题中我们用一个 d 数组来记录当前战舰 到 这列战舰最前面的战舰 的战舰数量, 用一个 size 数组
阅读全文
摘要:神TM模板。。我本来想休闲一下写点水题的。。。 开始做的时候直接敲了一个O(N2)的算法上去,编译的时候才发现根本开不下。。 好了,谈回这道题。 先不加证明的给出一种算法。 现在来大概的介绍一下这样做的原因。 首先,观察题目,注意到这个题和真正的模板的区别:给出1-n的两个排列P1和P2。 思考排列
阅读全文
摘要:一般的方法是记录状态是从哪儿转移来的然后递归输出。 但是明显递归有爆栈的危险。 所以可以用一个 (增加理解难度而实际没用的) 方法来避免。 具体来说,用一个vector保存答案。 例如这一题中,一般题解是用 来输出的,而我用了 来处理。 有什么用呢?增加代码长度与理解难度(笑)
阅读全文
摘要:此题出自 IOI 1999 此题的难点在于: 1.如何满足题目所述的顺序问题; 2.如何记录转移状态。 首先考虑朴素算法。着眼于问题1,不难想到枚举第一朵花的位置,然后在这个位置左边枚举第二朵花的位置......依此类推。 思考这个模型,发现其搜索树的状态存在大量重叠,且此问题满足“最优子结构”,“
阅读全文
摘要:考虑朴素的搜索。对于树上每一个节点,状态只有选或不选。 而很明显:选了当前节点,儿子节点选不选都可以;而假如不选当前节点,就必须选儿子节点. 容易发现,这样产生的搜索树会有大量的重叠。于是考虑记忆化搜索。 使用一个数组d[cur][2]来记录当前节点选 (d[cur][1]) 或不选 (d[cur]
阅读全文
摘要:读题可发现,对于每一个由地点和油量组成的二元状态,我们只有2种决策: 1.加油。 2.去往下一个能去的目的地。 最开始的时候其实不知道怎么确定加油的多少。但是看看数据规模。。。直接上暴力的记忆化bfs吧! 决策2的状态转移很好办,决策一的就暴力的让它每一次加一单位油,然后看作新状态。 关于算法的正确
阅读全文

浙公网安备 33010602011771号