摘要:
题意 给一个长为 \(n\) 的序列,以及交换次数 \(k\),每次可以在原先的序列 中任意交换两个数 交换后找一个最大子串和,输出其可能的最大值。 $1 \leq n \leq 200; 1 \leq k \leq 10$。 算法 暴力枚举+贪心 思路(心路历程) 拿到题第一下还想这最大字段和DP 阅读全文
摘要:
这里给出一种构造方法及其证明 **方法:**考虑从k开始依次构造差值,即第一个与第二个相差$k$,第二个与第三个相差$k-1$。首先假设第一个数为$1$,因此我们要把$1+k$放在第二个,那么第三个数应该为$1+k-(k - 1) = 2$,第四个为$2+(k - 3) = k - 1$,第五个为$ 阅读全文
摘要:
贪心算法两句话 第一句话: 能往左倒就往左倒。 如同数学中“我们不妨设”一样,相信很好理解。这里只对第二句话稍作解释: 不能往左倒的尽量往右倒 这样为什么是对的呢? 我们可以分类讨论一下: 假设当前已经处理到第$i$个,且它不能往左倒,$h_i$表示树高,$x_i$表示位置。 若$x_{i + 1} 阅读全文