• 集训 0617


      今天的题目很良心,都切中我们当前急需提高的地方,针对性强。

      第一题是道有趣的贪心题目。

      多组询问用长度为k的祖先儿子链覆盖一棵树的最小使用次数。

      首先,贪心性质很容易看出来,每次选择一个未被覆盖深度最深的叶子节点,往上覆盖K个点,这样构造一定能构造出一种最佳方案。可以用优先队列维护。

      那么我们考虑如何加速这个过程,或者说,如何均摊查询的复杂度。

      使用上面的构造方法,很容易看出来,单次复杂度很容易卡成O(n),而且不同的K基本上复杂度都没有什么变化。

      考虑一下上面的贪心的点个数,设叶子数为L,则入队点的个数不超过O(L+(n-L)/k)

      这个可以根据以上贪心的部分证明。

      那么再考虑本质不同的K,本质相同的K我们可以直接记下来答案,则相当于复杂度为

      ∑(1<=k<=n)O(L+(n-L)/k)。

      这里的L十分讨厌,不优化到L无法实现均摊,尝试优化掉这个L,这个东西可以使用DP求d[i]表示i节点最近的叶节点的距离即可。

      然后我们就发现这玩意均摊完了是nlog2n的。

      考试时,一方面状态设置得不好,导致一个问题不好解决,另一方面没有想到去掉L,于是只拿了52.

      第二题:

      推DP状态的题目。

      题解里给了4个状态:

      暴力状态。

      f[i][S],S表示排列状态,阶乘级别状态。

      f[i][x][S],S表示2进制状态,幂级状态。

      f[x][y][0/1/2/3],n^2级别状态,多项式级别的状态。

      很有趣,很多考试中都会出现这种类型的题目。

      恩,推出了前两个,在考虑第三个时,经验不足,挂了,然后卡常...

      第三题:

      考虑若x>y且x放到了y的前面那么x将一直放在y的后面。

      那么可以将x,y进行考虑贡献,就成了二维数点问题。

      恩,没推导出二位数点,10分辛苦分。

      总的来说,考挂的原因主要是1.模型挂了2.状态设置以及性质推导。

       

  • 相关阅读:
    leetcode 375. Guess Number Higher or Lower II
    leetcode 374. Guess Number Higher or Lower
    转 PHP中exec、system等函数调用linux命令问题
    转 PHP 使用 Redis
    转 Vim操作
    转 php simple test
    转 手把手教你最简单的开源项目托管GitHub入门教程
    Bootstrap开启模态框后对数据处理(标记模态框的开启与关闭状态)
    java必会的英语单词
    Service和Servlet的区别
  • 原文地址:https://www.cnblogs.com/chadinblog/p/7040774.html
Copyright © 2020-2023  润新知