zoukankan      html  css  js  c++  java
  • 4.13 省选模拟赛 守卫 点分治 虚树

    avatar
    avatar

    没脑子选手又来丢人了 写正解写不出来 暴力的特判也给写挂了。

    看一眼题目范围 sumk<=500000 提示算法:虚树。

    但是 考虑直接对原树做出来虚树 发现这样做需要换根dp求每个点能审查的最大范围。然后按边处理。

    此时可以发现出现了问题 根本无法快速有效的查询x的父亲那边的点的数量 主席树不行 主席树+换根也是错误的。

    自闭ing.考虑打暴力 对于nQ的暴力 直接换根dp一下。

    对于ki==1的点 ??? 怎么不会做了..这种问题已经不能用简单的换根解决了。

    考虑点分治 容易用树状数组维护 子集一减就好了 更容易的是 直接求出sum[k]表示距当前点分中心<=k的点的数量。

    前者nlog^2 后者nlogn.

    对于 是链的情况 不难想到区间覆盖性问题 可以直接排个序然后贪心求 写一个线段树也行。

    这样就有50分了。

    但是我上午执意写正解 写到自闭。

    考虑100分 不难想到 点分树求答案 发现这样做需要预处理主席树 然后在每个点上查询 不过 重复的元素和距离的问题很难讨论清楚。

    题解给了一种做法是 ki>1时 考虑建一棵虚树出来。按边处理。

    怎么说 对于两个点 重合部分中间再建一个点 然后表示一下负贡献。

    我不太能理解这一点 好毒瘤...

    先咕了 放篇题解在这 LINK:Altria Pendragon 大佬的题解

    自闭

  • 相关阅读:
    结对第一次—原型设计(文献摘要热词统计)
    第一次作业-准备篇
    Alpha冲刺Day9
    Alpha冲刺Day8
    Alpha冲刺Day7
    Alpha冲刺Day6
    Alpha冲刺Day5
    Alpha冲刺Day4
    Alpha冲刺Day3
    Alpha冲刺Day2
  • 原文地址:https://www.cnblogs.com/chdy/p/12701352.html
Copyright © 2011-2022 走看看