zoukankan      html  css  js  c++  java
  • DAY 5 下午

    每个点一定属于一个重链

    重链条数和轻边边数是logn级别

    证明和启发式合并差不多

    因为轻子树的大小至少是重子树大小-1

    树链剖分:两遍dfs

    第一次:统计子树大小,确定重儿子

    第二次:把重链剖出来

    每次都走重儿子,则它的dfs序中重链是连续的一段

    复杂度o(log n)

     

    改变边权和询问路径上最大边权

    把边权放到点上,把点权放到线段树中 

    修改的时候就是单点修改

    查询最大边权的时候,就查询两条链(因为lca存的是它到它父亲这一条边的边权)上的最大值

    重链-轻边-重链-轻边

    找线段树上对应的区间然后查询就可以

     

     

    开一个2000位的bitset

    第i位是1表示标号为i的bitset可以到达他

    这个scc的大小*它能到达的scc的大小之和再加起来就是答案

     

     

    bitset

    #include<bitset>

    bitset<100000> a;

    表示一个长度为100000的二进制数(下标从0开始)

    bitset<100000> b;

    a[1]可以取到第一位

    a[0]

    a[99999]=1;

    a&b

    a^b

    a|b

    a.set

    a.reset

    a.count(数有多少1)

  • 相关阅读:
    面试开发需要准备的
    多线程 多进程
    TCP/IP协议学习
    深信服算法岗实习面试经验
    TZOJ4777: 方格取数
    Python 基于 NLP 的文本分类
    mac os 使用记录
    字节跳动游戏开发岗题目
    mac进行acm(C/C++)编程
    常用的正则表达式(转)
  • 原文地址:https://www.cnblogs.com/lcezych/p/11332521.html
Copyright © 2011-2022 走看看