zoukankan      html  css  js  c++  java
  • 模拟102 题解

    A. 你相信引力吗

    显然是单调栈处理。

    然而优弧/劣弧两种情况,加上高度存在相同,就比较难处理。

    然而环是可以平移的,所以一个好的方法是将其中的最大值移到一个端点,

    于是跨环端点的情况只出现在 右半部分形成一个单调不降的序列。

    顺便去重就可以了。

    B. 停不下来的团长奥尔加

    打表发现$dp_i=2*dp_{i-1}-dp{f_i-1}+2$

    $dp_n$为最终的答案。

    将式子拆一下,似乎正确性还挺显然的。

    当队长到$i$的时候,前面的点都被经过了偶数次,

    所以问题是类似的,可以进行$dp$。

    用前缀和来做到直接统计区间的信息。

    C. Lesson5!

    问题是$DAG$删一个点情况下的最长路。

    似乎有一个经典的做法来解决这个问题。

    在本题中即最长路径生成树。

    删掉一个点$x$意义下的最长路,存在两种情况:

    终点不是$x$的子树:预处理出答案,之后可以用$dfs$序,区间维护信息解决。

    终点是$x$的子树:那么存在一条路径$a ightarrow b$,满足$a$不在$x$子树中而$b$在。

    预处理出每个点到达终点的最长路径$dis_i$,由超级源点$S$到每个点的最长路径$dep_i$。

    即$ans_x$对$dep_a+dis_b+1$取$max$。

    枚举边$(a,b)$,可以用树剖来支持取$max$操作。

    一个巧妙的做法是提前将所有的$dep_a+dis_b+1$从大到小排序,

    所以每个点只需要第一次被更新,之后可以直接跳过。

    所以可以用类似并查集的结构维护这个东西。

  • 相关阅读:
    switch 语句注意事项
    line-height 和 font-size的关系
    HTTP 缓存
    hashchange事件的认识
    面向对象的写法,见到就添,持续更新。。。
    chrome浏览器开发者工具之同步修改至本地
    history对象的一些知识点
    你不知道的函数节流,提高你的JS性能!
    玩媒体查询,就是这么简单粗暴!
    css中clip-path属性的运用
  • 原文地址:https://www.cnblogs.com/skyh/p/11804201.html
Copyright © 2011-2022 走看看