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

T1

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

T2

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

T3

一:

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

二:

  • 好像可以dp?
  • d p i dp_i dpi表示以 a i a_i ai结尾的最长LIS
  • d p i = m a x ( d p j ) + 1 dp_i = max(dp_j)+1 dpi=max(dpj)+1 当前仅当 a i − a j > 中 间 0 的 个 数 a_i - a_j > 中间0的个数 aiaj>0
  • s u m i sum_i sumi表示0的前缀和
  • 有: a j − a i > s u m j − s u m i a_j-a_i>sum_j-sum_i ajai>sumjsumi
  • 移项后得: a j − s u m j > a i − s u m i a_j-sum_j>a_i-sum_i ajsumj>aisumi
  • ?变成了LIS??
  • n l o g n 求 一 边 L I S 即 可 nlogn求一边LIS即可 nlognLIS

T4

  • 挂了

T5

C 2 S = 4 ( a + b ) 2 ( a b ) 我 们 可 以 把 4 忽 略 = ( a 2 + 2 a b + b 2 ) ( a b ) 把 2 抛 掉 = a b + b a 对 勾 函 数 求 \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叉哈夫曼树

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值