zoukankan      html  css  js  c++  java
  • 2016-5-30模拟测试

    • T1

      • description
        给一棵(n(leqslant 100000))个节点的树,每个节点的种类两两不同,要求支持一下几个操作:
        1.将这个点到根的路径变成一种新的点
        2.询问以这个点为根的子树中的点到根的所有路径,对于每一条路径,贡献为这条路径上不同的点的个数。
        3.换根
      • solution
        可以发现这些都是LCT的操作,将虚边设为1,实边设为0,则只需要问子树内所有点到根的权值和就行了,而这个在(access)的过程中配合线段树的子树修改即可。
      • notice
        在配合线段树进行子树修改的时候,往往需要知道一个点在另一个点的哪棵子树中,这可以用倍增或者链剖处理,LCT处理起来就更方便了,并且我们可以以直接知道这些点和根的位置关系,讨论一下就行了(注意讨论的严谨性)。
    • T2

      • description
        对于(forall 1 leqslant k leqslant n)(1,2,3...n)的所有错排中含有长度为(k)的环(令(i)(a_i)连边)的排列的数量。
      • solution
        枚举循环节长度,以及至少有几个循环节,容斥计算即可,还要套个错排公式。
    • T3

      • description
        给一个序列(a_1,a_2,...a_n),若(i<j且a_i>a_j)(i,j)之间有一条边,求即是独立集又是支配集的集合的数量。
      • solution
        独立集:上升序列
        支配集+独立集:设(f_i)为前(i)个数选了(i)的方案数,对于(f_i)可以更新(f_j)的需满足对于(forall i < k < j,a_i < a_k < a_j),复杂度(O(n^2)).
        我考场上记了一个已选的最大的和未选的最小的,本来是(O(n^3))的但是必须满足最大的小于最小的,就会有很多无用状态,拿map进行转移就通过了所有的测试点。
  • 相关阅读:
    N46期第一周作业
    备份MBR分区表,并破坏后修复
    预习作业(五)作业
    预习作业(四)作业
    通过v$sqlarea,v$sql查询最占用资源的查询
    ORACLE快速彻底Kill掉的会话
    HTML5中修改表单验证默认提示语句
    input正则 常用正则(备用)
    使用扫描枪扫描条码时字符识别写入缓慢问题(针对element-ui的el-input)优化
    JQuery经验汇总
  • 原文地址:https://www.cnblogs.com/showson/p/5544165.html
Copyright © 2011-2022 走看看