BZOJ #3653. 谈笑风生
题目
题意:
给定一棵树.
询问给定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)
这样总复杂度就线性啦~~
BZOJ #3653. 谈笑风生相关推荐
- [BZOJ 3653]谈笑风生
[BZOJ 3653] 谈笑风生 题意 给定一棵 \(n\) 个点根为 \(1\) 单位权值的树以及 \(q\) 个查询, 每次查询给定 \(p\) 和 \(k\), 求满足 \(a,p\) 都是 \ ...
- BZOJ 3653: 谈笑风生(离线, 长链剖分, 后缀和)
题意 给你一颗有 \(n\) 个点并且以 \(1\) 为根的树.共有 \(q\) 次询问,每次询问两个参数 \(p, k\) .询问有多少对点 \((p, a, b)\) 满足 \(p,a,b\) 为 ...
- 【刷题】BZOJ 3653 谈笑风生
Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称"a比b不知道 高明到哪里去了". ? 设a 和 b 为 ...
- BZOJ 3653 谈笑风生
Problem BZOJ 然而是权限题,如果你像蒟蒻我一样没有权限号请上洛谷~ Solution 据说正解是主席树??? 不管了,反正主席树常数巨大,线段树虽然暴力好歹也能卡过去,而且这题数据还比较水 ...
- [BZOJ 3653] 谈笑风生
题目 给定一棵 n 个点的有根树,另有 q 次询问,每次询问给定 a.k,求有多少个点对 (b, c) 满足 a.b.c 两两不同,a.b 都是 c 的祖先且 a.b 间距离不超过 k. n, q ≤ ...
- BZOJ 3653: 谈笑风生
题目在这里呀! 个人认为是一道很好的题目,原来可持久化线段树还能这么用,看题解之前还是没有想到啦要批评!那就写个题解补偿一下? 题意 给你一棵有根树,n个节点,有q次询问,每次询问,给出两个数x(1& ...
- 3653: 谈笑风生
3653: 谈笑风生 链接 分析: $ans = min(deep[x] - 1, k) * siz[x] - 1 +\sum\limits_{y是u子树内的点}(siz[y] - 1)$ 前面的可以 ...
- bzoj 3653 [湖南集训]谈笑风生
题目描述 设 T 为一棵有根树,我们做如下的定义: • 设 a 和 b 为 T 中的两个不同节点.如果 a 是 b 的祖先,那么称"a 比 b 不知道高明到哪里去了". • 设 a ...
- 【BZOJ 3653】谈笑风生
传送门 Problem 给出一个有 nnn 个点的有根树,根节点为 111,边的长度为 111. 有 qqq 个询问,询问给定两个整数 ppp 和 kkk,问有多少个有序三元组 (a,b,c)(a,b ...
最新文章
- vmware 打开主页 打开所有库中的虚拟机
- 列式存储 V.S. 行式存储
- 条款20 :宁以pass-by-reference-to-const 替换pass-by-value
- wordpress怎么设置文章页面不打开新的窗口_2019 WordPress外贸网站SEO优化基础设置(新手图文教程)...
- Axure - 破解
- 激活层是每一层都有吗_89小户型复式这样装,每一层都设计得很棒,完工后秒变小区样板间,邻居前来取经...
- python自定义异常类时、可以继承的类是_Python异常类型及处理、自定义异常类型、断言...
- 百度计算机视觉暑期实习面经(成功上岸!已拿offer)
- 如何使用python将二维数组去重呢?
- 基于JVM原理JMM模型和CPU缓存模型深入理解Java并发编程
- 进程间通讯:实现基于多进程的文件拷贝
- ipad蓝牙键盘使用技巧_iPad提示,技巧和教程的完整列表
- 带t2芯片的mac装linux,制作macOS系统盘超级简单,以及T2芯片的安装方法
- Google搜索关键字
- gmap实现地图的旋转
- onedriver -1T容量,edu邮箱申请。
- 支付平台--清算总的详解
- uniapp配置全局样式
- 人工智能讲师AI讲师叶梓谈人工智能的应用人工智能项目咨询应用案例-8
- mybatis-Springboot配置多数据源出现错误记录
热门文章
- Android智能硬件开发心得总结(二)
- Spring笔记(基于狂神视频+自己理解)
- 无奈的我,无奈的C++ Builder
- 优麒麟系统安装MySQL_优麒麟Linux(Ubuntu Kylin)简易安装手册
- imx6 linux 开发环境,米尔iMX6UL开发板Linux操作系统的环境部署
- MySQL存储过程 -- 通过游标遍历和异常处理迁移数据到历史表
- 第二章 编程初步 Ivor Horton
- Visual C++ 2008入门经典 Ivor Horton
- 基于知识图谱的知识泛化让AI学会“举一反三”
- 学计算机ps是什么,学PS电脑绘画要掌握什么呢?