zoukankan      html  css  js  c++  java
  • 「考试」省选35

    T1
    把题目中的限制转化为:
    (x)在儿子的子树中并且(y)不在儿子的子树中。
    (y)在儿子的子树中并且(x)不在儿子的子树中。
    线段树节点维护(dfs)序在节点区间中的所有的(x)或者(y)
    当然,红蓝各开两个线段树树。
    按照(dfs)序区间查询然后暴力扫描(vector)就可以知道要删除哪些点了。
    代码很难写。
    时空复杂度均为(O(nlogn))

    T2
    括号序列匹配问题。
    可以拆成两条路径然后再(lca)统计。
    这样就可以简单的用点分治了。
    在每一个分治重心维护两个数组。

    [fr[i][j],se[i][j]$$分别表示可以分成$j$个的合法序列,前面有$i$个左/右括号无法匹配的方案数。 然后这个东西的统计部分直接$dfs$即可。 答案统计就用$FFT$搞就行了。 复杂度是$O(nlog^2 n)$。 T3 80分暴力可以用寿司晚宴的做法。 分开考虑小于和大于 $sqrt{n}$ 的情况。 用大于 $sqrt{n}$ 的作为初值,小于的靠$dp$来实现。 因为$n=800$,所以可以状压这个状态,只有2^10种状态。 随便写都能过的复杂度。 不知道哪里来的结论。 $S$中的点至多有两个不同质因子。 而且这些质因子一个小于$sqrt{n}$ 一个大于 $sqrt{n}$ 这样先把每个质因子的贡献加上。 然后跑最大费用可行流。 看看有没有某两个质因子的贡献是大于两个分开的贡献。 边数很少,所以跑得很快。 复杂度未知。]

  • 相关阅读:
    airtest支持Cocos-Creator,SDK接入
    Python的getter和setter方法
    liunx常用命令
    liunx的vim常用命令收集
    django+atx+liunx的一些shell脚本
    django+airtest+atx部署liunx平台
    Android下的鉴权实现方案
    Mate20 pro实现H265 (HEVC)实时硬件编码
    OpenCV C++常用功能介绍
    Ubuntu16.04编译libjpeg-turbo库
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12395980.html
Copyright © 2011-2022 走看看