zoukankan      html  css  js  c++  java
  • 集训 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.状态设置以及性质推导。

       

  • 相关阅读:
    Dell Optiplex 330上Windows 7激活方法与工具
    了解控制器、控制器操作和操作结果
    [转]为C# Windows服务添加安装程序
    前段时间晚上回家不想看电视了,就做了个网站
    MSSQL 2008里事务的一个问题
    关于JavaScript解析XML的性能的问题(已解决)
    自己做了一个教育的网站
    Windows 7下安装SQL Server 2005过程详解
    (转)C#学习基础概念二十五问
    了解模型、视图和控制器
  • 原文地址:https://www.cnblogs.com/chadinblog/p/7040774.html
Copyright © 2011-2022 走看看