2017.1.14——寒假集训第三天

今天训练内容较易,回家后要把前两天欠下的债还还,随后,找一找以前比较经典,考思维,难打的题目,巩固一下,打扎实基础,按理来说,这些当初费了很多时间的题目不是很容易可以做出,就当重新做一道题去做吧,重新思考,如果能思考出不同的方法便是更好。


先总结一下今天的题目:

T1:

·题目大意不说

·裸算法题:克鲁斯卡尔

但今天要学习一下这个算法!巩固!



T2:

·前缀和优化,枚举i,j,再枚举(i,j)点走k步所能达到的行,再这些行里面用前缀和优化所能达到的列.

·想想其它限制??如果说取必须走K步的点应该怎么做?

·(很简单,可以把 取K步的方案数-取(k-1)步的方案数 相减即为答案

·是否能优化?

·显然,根据走的步数对称,故我们可以在算上半部的时候直接把下半部加了

·还有优化?

·没有了



T3:简单DP


T4:规律


T5:

·最大子矩阵

·显然,如果没有负数,则整个矩阵就是最大子矩阵,那么,根据此性质,易想到:

·我们可以枚举最大子矩阵的行或列,并求通过前缀和把行或列压成一个数

·做最大和子序列即可

·最大和子序列有两种方法:

·第一种:

贪心,可以想,如果从一段开始选,和都小于0,不如不选,根据此想法可以O(n)做出,故时间复杂度为O(n³)

·第二种:

贪心,可以想,我们枚举哪一列为矩阵的右边界,那么如果没负数,则从第一列开取答案最优,而因为有负数,故我们可以把前面从第一列开始最大的一个负数子矩阵记录好,不选这个矩阵即可。

你可能感兴趣的:(2017.1.14——寒假集训第三天)