zoukankan      html  css  js  c++  java
  • 省选模拟35

    刚自闭改完T2,我简单写吧。。。

    A. two

    有一段复杂的描述简单说就是一个点在子树内,另一个点在子树外。
    60pts的暴力我用bitset存祖先卡过去了
    正解:
    0蓝1红。
    按dfs序建线段树,那么对于该树上已被删除的一条边(p,q),fa[q]=p,现阶段需要删除的点对满足,一个在[in[q],out[q]]区间中,另一个在区间外。
    做法是以一端点的dfs序为下标,值是另一端点。
    如此建两棵线段树,并在节点内按照另一端点排序。
    这样的话删除操作就是单调的,直接扫描即可。

    B. bracket

    30pts枚举端点dfs暴力
    处理单次询问复杂度很高,询问数又很多,可以想到点分治。
    问题在于合并括号序列。
    设重心为u
    点对i->j合法,那么i到u的u处的前缀和一定与j到~~~的互为相反数,且i取到i-u所有前缀和的最大值,j取到最小值。
    记录最值出现次数得出段数
    所以分治到u,dfs处理前缀和为正出发的一部分f,以及目的g
    合并时卷积优化。
    细节较多。。。

    C. sum

    有个结论:最优解中的元素最多只有两种质因子,若有两种则一个<=sqr 一个>sqr
    好像可以基本不等式yy下。但不会证。。。
    如果没有两种质因子的情况,那么每个质数取到<=n的最大幂次数。
    在该前提下,如果质因子配对能更优,那么连边
    跑最大费用流得解。

  • 相关阅读:
    Linux提供哪些功能
    C++——重载原理分析
    C++——多维数组动态开辟与释放
    C++——异常处理
    C++——流类库和输入/输出
    C++——virtual function
    C++——虚函数表解析
    C++——多态实现原理分析
    Python基础——__name__变量
    DNS服务——智能域名解析、镜像Web站点、直接域名泛域名
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12398557.html
Copyright © 2011-2022 走看看