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$从大到小排序,

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

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

  • 相关阅读:
    Don‘t Cry for Me, Argentina
    对象池
    拒绝高姿态
    SOS: How to popup a HwndSource on topmost
    关于设计和设计文档的2个补充
    从今天开始写博客
    Kafka+Storm写入Hbase和HDFS
    工作流调度引擎Oozie
    showModalDialog在父窗体和子窗体之间传值
    慢说HttpContext
  • 原文地址:https://www.cnblogs.com/skyh/p/11804201.html
Copyright © 2011-2022 走看看