题目

题意:
给定一棵树.
询问给定b,kb,kb,k,现在要选择两个距离b≤kb\le kb≤k单位的点a,ca,ca,c,使得a,ba,ba,b都是ccc的祖先.
问总选择方案数.
n,q≤3e5n,q\le 3e5n,q≤3e5

有两种实现方法:
一开始脑抽写了一个以b,cb,cb,c为中心的dpdpdp.
具体我们考虑固定一个ccc的代价:
min⁡(dep[b]−1,k)+min⁡(dep[c]−dep[b]−1,k)\min(dep[b]-1,k)+\min(dep[c]-dep[b]-1,k)min(dep[b]−1,k)+min(dep[c]−dep[b]−1,k).(即考虑aaa是否为bbb的祖先)

然后我们发现前面可以快速计算,后面实际上维护一个后缀和就好了.
codecodecode

然后,看到一个更加简单的做法:
考虑后面一部分,如果我们以aaa为中心,那么代价为sz[a]−1sz[a]-1sz[a]−1.
所以我们直接按深度维护sz[a]−1sz[a]-1sz[a]−1的和即可.

啊,你问我为啥维护后缀和?
因为维护后缀和在合并的时候只需要len[y]len[y]len[y]的循环次数,
而前缀和要len[x]len[x]len[x]次.(len[x]len[x]len[x]为从xxx出发的最长链,y∈sonxy\in son_xy∈sonx​)
这样总复杂度就线性啦~~

codecodecode

BZOJ #3653. 谈笑风生相关推荐

  1. [BZOJ 3653]谈笑风生

    [BZOJ 3653] 谈笑风生 题意 给定一棵 \(n\) 个点根为 \(1\) 单位权值的树以及 \(q\) 个查询, 每次查询给定 \(p\) 和 \(k\), 求满足 \(a,p\) 都是 \ ...

  2. BZOJ 3653: 谈笑风生(离线, 长链剖分, 后缀和)

    题意 给你一颗有 \(n\) 个点并且以 \(1\) 为根的树.共有 \(q\) 次询问,每次询问两个参数 \(p, k\) .询问有多少对点 \((p, a, b)\) 满足 \(p,a,b\) 为 ...

  3. 【刷题】BZOJ 3653 谈笑风生

    Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称"a比b不知道 高明到哪里去了". ? 设a 和 b 为 ...

  4. BZOJ 3653 谈笑风生

    Problem BZOJ 然而是权限题,如果你像蒟蒻我一样没有权限号请上洛谷~ Solution 据说正解是主席树??? 不管了,反正主席树常数巨大,线段树虽然暴力好歹也能卡过去,而且这题数据还比较水 ...

  5. [BZOJ 3653] 谈笑风生

    题目 给定一棵 n 个点的有根树,另有 q 次询问,每次询问给定 a.k,求有多少个点对 (b, c) 满足 a.b.c 两两不同,a.b 都是 c 的祖先且 a.b 间距离不超过 k. n, q ≤ ...

  6. BZOJ 3653: 谈笑风生

    题目在这里呀! 个人认为是一道很好的题目,原来可持久化线段树还能这么用,看题解之前还是没有想到啦要批评!那就写个题解补偿一下? 题意 给你一棵有根树,n个节点,有q次询问,每次询问,给出两个数x(1& ...

  7. 3653: 谈笑风生

    3653: 谈笑风生 链接 分析: $ans = min(deep[x] - 1, k) * siz[x] - 1 +\sum\limits_{y是u子树内的点}(siz[y] - 1)$ 前面的可以 ...

  8. bzoj 3653 [湖南集训]谈笑风生

    题目描述 设 T 为一棵有根树,我们做如下的定义: • 设 a 和 b 为 T 中的两个不同节点.如果 a 是 b 的祖先,那么称"a 比 b 不知道高明到哪里去了". • 设 a ...

  9. 【BZOJ 3653】谈笑风生

    传送门 Problem 给出一个有 nnn 个点的有根树,根节点为 111,边的长度为 111. 有 qqq 个询问,询问给定两个整数 ppp 和 kkk,问有多少个有序三元组 (a,b,c)(a,b ...

最新文章

  1. vmware 打开主页 打开所有库中的虚拟机
  2. 列式存储 V.S. 行式存储
  3. 条款20 :宁以pass-by-reference-to-const 替换pass-by-value
  4. wordpress怎么设置文章页面不打开新的窗口_2019 WordPress外贸网站SEO优化基础设置(新手图文教程)...
  5. Axure - 破解
  6. 激活层是每一层都有吗_89小户型复式这样装,每一层都设计得很棒,完工后秒变小区样板间,邻居前来取经...
  7. python自定义异常类时、可以继承的类是_Python异常类型及处理、自定义异常类型、断言...
  8. 百度计算机视觉暑期实习面经(成功上岸!已拿offer)
  9. 如何使用python将二维数组去重呢?
  10. 基于JVM原理JMM模型和CPU缓存模型深入理解Java并发编程
  11. 进程间通讯:实现基于多进程的文件拷贝
  12. ipad蓝牙键盘使用技巧_iPad提示,技巧和教程的完整列表
  13. 带t2芯片的mac装linux,制作macOS系统盘超级简单,以及T2芯片的安装方法
  14. Google搜索关键字
  15. gmap实现地图的旋转
  16. onedriver -1T容量,edu邮箱申请。
  17. 支付平台--清算总的详解
  18. uniapp配置全局样式
  19. 人工智能讲师AI讲师叶梓谈人工智能的应用人工智能项目咨询应用案例-8
  20. mybatis-Springboot配置多数据源出现错误记录

热门文章

  1. Android智能硬件开发心得总结(二)
  2. Spring笔记(基于狂神视频+自己理解)
  3. 无奈的我,无奈的C++ Builder
  4. 优麒麟系统安装MySQL_优麒麟Linux(Ubuntu Kylin)简易安装手册
  5. imx6 linux 开发环境,米尔iMX6UL开发板Linux操作系统的环境部署
  6. MySQL存储过程 -- 通过游标遍历和异常处理迁移数据到历史表
  7. 第二章 编程初步 Ivor Horton
  8. Visual C++ 2008入门经典 Ivor Horton
  9. 基于知识图谱的知识泛化让AI学会“举一反三”
  10. 学计算机ps是什么,学PS电脑绘画要掌握什么呢?