随笔分类 - C++_贪心
摘要:算法 贪心(黑题?) 思路 考虑如何让每一位演奏家发挥最大作用,不难发现,当每一位演奏者优先处理自己能力范围内左端点最小的区间时可以达到最优。 所以,我们可以将乐曲和演奏者按照右端点排序,并用$set$维护乐曲左端点,对于每一个演奏者,将ta的左端点${lower_bound}$一下就好了。 注意
阅读全文
摘要:题意 现在有n个数$a_1,a_2,a_3,...,a_n$ 。你最多可以进行k次操作,每次操作你可以将其中一个数乘以$x$,使得$a_1|a_2|...|a_n$ 最大。 算法 贪心+前缀后缀 思路 首先明确:答案的这$k$次$\times x$操作用都会在同一个数身上。因为$x$大于$2$,所以
阅读全文
摘要:题意 给出2个正整数 $n,m(1\leq n,m \leq 105)$与长度为$m$的序列$a[1-m]$,保证$a[i]\leq n$,你可以把所有值为$a[i]$的元素改为$a[j]\(,可以不改且只能改一次,要求最小化\)\sum\limits_{i\leq m-1} |a_i-a_{i+1
阅读全文
摘要:算法 贪心+无数有趣的细节 高能预警:本题细节较多,请仔细食用。 思路 从小数点往后搜,直到遇见第一个$\geq 5$的数字,它就是我们要四舍五入的第一个。然后从它开始往回搜,只要$\geq 5$就四舍五入。 正确性 小数点后位数靠前的数字越大,值越大,所以我们将第一个能“$5$入”的点“入”掉(因
阅读全文
摘要:细节题 本文会把作者踩到的坑指出,以便您调试 思路 贪心+$DFS$染色,算法其实很好想,考虑哪些$*$点是必须被替换的: 通过观察,我们发现,一个$$点要被替换,当且仅当有一个包含它的$2\times 2$的矩阵中除它之外全是$.\(点(当我们已经将其他需要替换的\)$点替换掉时) **证明:**
阅读全文
摘要:题意 给一个长为 \(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}
阅读全文

浙公网安备 33010602011771号