zoukankan      html  css  js  c++  java
  • dfs序+主席树 BZOJ 2588 当然树链剖分+主席树也可以?

    2588: Spoj 10628. Count on a tree

    Time Limit: 12 Sec  Memory Limit: 128 MB
    Submit: 5822  Solved: 1389
    [Submit][Status][Discuss]

    Description

    给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。

    Input

    第一行两个整数N,M。
    第二行有N个整数,其中第i个整数表示点i的权值。
    后面N-1行每行两个整数(x,y),表示点x到点y有一条边。
    最后M行每行两个整数(u,v,k),表示一组询问。

    Output

    M行,表示每个询问的答案。最后一个询问不输出换行符

    Sample Input

    8 5
    105 2 9 3 8 5 7 7
    1 2
    1 3
    1 4
    3 5
    3 6
    3 7
    4 8
    2 5 1
    0 5 2
    10 5 3
    11 5 4
    110 8 2

    Sample Output

    2
    8
    9
    105
    7

    HINT

    HINT:

    N,M<=100000

    暴力自重。。。
     
     
    思路:dfs下去,并且每次dfs往下面的时候都建一棵树,然后最后的按照这样子来询问:cnt[u] - cnt[v] - cnt[lca(u, v)] - cnt[par[lca(u,v)][0]].
  • 相关阅读:
    8.13 Java自学
    8.12 Java自学
    8.11 Java自学
    JAVA学习日报 8.18
    JAVA学习日报 8.17
    JAVA学习日报 8.16
    JAVA学习日报 8.15
    JAVA学习日报 8.14
    JAVA学习日报 8.13
    JAVA学习日报 8.12
  • 原文地址:https://www.cnblogs.com/heimao5027/p/6481405.html
Copyright © 2011-2022 走看看