题目大意 给一个 层的三角形,第 层有 个元素。设第 行第 列的元素为 。一开始只有第一层的元素可选择,其他层的元素 可被选择当且仅当 和 均被选择。求共选择 个元素的元素和最大值。 题解 DP。设 表示后 列用完,选了 个元素,且第 列共选择了前 行元素的最大和。那么有 其中 表示第 列前 行元素的和。朴素转移的时间复杂度为 ,可以通过维护 ,即后缀最大值进行优化,优化后的时间复杂度为 。 #include <bits/stdc++.h> #define REP(temp, init_val, end_val) for (int temp = init_val; temp <...