【金华集训 && 笔记】Day12——贪心

本文深入探讨了算法竞赛中各类问题的解决策略,包括贪心算法、动态规划、哈夫曼树等,通过具体题目解析,提供了高效求解思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

T1

  • 考虑贪心
  • 我们希望代价最小,就是想让每一天的花费最小(生产 + 保存)
  • 只要从前往后动态维护一个花费的一个前缀就可以O(n)O(n)O(n)的过此题

T2

  • 这个是一道挺简单的一个贪心
  • 从前往后扫,如果当前位比后面的要大,那么就删除当前位
  • 当只能删除一次的时候,这个贪心很好证明,但是删除M次如何证明呢?
  • 当从前往后扫删除时,这样的删法很显然是将删除的当前位的一个数字降低了,因为后面的数字比当前位要小,而最高位降低数字的大小很显然比最低位降低数字的大小要优,这也相当于每次都是最优解
  • 持续M次即可

T3

一:

  • 二分求最长上升子序列
  • 听某位同学说可以用平衡树搞一搞
  • 可能是我太菜了还是那么都不会…

二:

  • 好像可以dp?
  • dpidp_idpi表示以aia_iai结尾的最长LIS
  • dpi=max(dpj)+1dp_i = max(dp_j)+1dpi=max(dpj)+1 当前仅当ai−aj>中间0的个数a_i - a_j > 中间0的个数aiaj>0
  • sumisum_isumi表示0的前缀和
  • 有:aj−ai>sumj−sumia_j-a_i>sum_j-sum_iajai>sumjsumi
  • 移项后得:aj−sumj>ai−sumia_j-sum_j>a_i-sum_iajsumj>aisumi
  • ?变成了LIS??
  • nlogn求一边LIS即可nlogn求一边LIS即可nlognLIS

T4

  • 挂了

T5

C2S=4(a+b)2(ab)我们可以把4忽略=(a2+2ab+b2)(ab)把2抛掉=ab+ba对勾函数求\frac {C^2} S \\ =\frac {4(a+b)^2}{(ab)} \\我们可以把4忽略 \\ =\frac{(a^2+2ab+b^2)}{(ab)} \\ 把2抛掉 \\=\frac ab + \frac ba\\对勾函数求SC2=(ab)4(a+b)24=(ab)(a2+2ab+b2)2=ba+ab


哈夫曼树

给定n个权值作为n个叶子节点,构造一个二叉树,使该树的带权路径长度达到最小。

构造方法:合并果子


K叉哈夫曼树

维护两个队列,每次从两个队列的头上去元素,类似归并排序的实现方法,并将取的数之和作为一个新的元素添加到第二个队列的末尾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值