简化题意

m次询问,每次询问x的子树中,与x节点距离不超过y的节点的子树和。n,m≤300,000。


思路

按照dfs序排序,每次将一个点的答案塞到第depu的位置,这样得到一个前缀和,每次询问作减法即可。

可持久化线段树。


代码

 #include<bits/stdc++.h>
using namespace std;
const int maxn=3E5+;
typedef long long int ll;
ll n,m,x,y,sum[maxn],dep[maxn],cur,t[maxn*],root[maxn*],fa[maxn],size,gg;
ll ls[maxn*],rs[maxn*],ti,dfn[maxn],last[maxn],maxx[maxn],head[maxn*];
struct edge{ll to,next;}E[maxn*];
void insert(ll l,ll r,ll pos,ll&num,ll pre,ll val)
{
num=++cur;
t[num]=t[pre];
ls[num]=ls[pre];
rs[num]=rs[pre];
t[num]+=val;
if(l==r)return;
ll mid=(l+r)>>;
if(pos<=mid)insert(l,mid,pos,ls[num],ls[pre],val);
else insert(mid+,r,pos,rs[num],rs[pre],val);
}
ll ask(ll L,ll R,ll l,ll r,ll num)
{
if(L<=l&&r<=R)return t[num];
else if(r<L||R<l)return ;
ll mid=(l+r)>>;
return ask(L,R,l,mid,ls[num])+ask(L,R,mid+,r,rs[num]);
}
void add(ll u,ll v)
{
E[++size].to=v;
E[size].next=head[u];
head[u]=size;
}
void dfs(ll u,ll F,ll d)
{
dep[u]=d;
fa[u]=F;
sum[u]=;
maxx[u]=dfn[u]=++ti;
last[u]=u;
for(ll i=head[u];i;i=E[i].next)
{
ll v=E[i].to;
if(v==F)continue;
dfs(v,u,d+);
sum[u]+=sum[v];
if(maxx[v]>maxx[u])
{
maxx[u]=maxx[v];
last[u]=last[v];
}
}
}
void init(ll u,ll F,ll d)
{
insert(,n,d,root[u],root[gg],sum[u]-);
gg=u;
for(ll i=head[u];i;i=E[i].next)
{
ll v=E[i].to;
if(v==F)continue;
init(v,u,d+);
}
}
int main()
{
// freopen("laugh.in","r",stdin);
// freopen("laugh.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>m;
for(ll i=;i<=n-;++i)
{
cin>>x>>y;
add(x,y);
add(y,x);
}
dfs(,,);
gg=;
init(,,);
for(ll i=;i<=m;++i)
{
cin>>x>>y;
if(x==)cout<<ask(,+y,,n,root[last[]])<<endl;
else cout<<(sum[x]-)*min(dep[x]-,y)+
ask(dep[x]+,dep[x]+y,,n,root[last[x]])-ask(dep[x]+,dep[x]+y,,n,root[x])<<endl;
}
return ;
}

洛谷 P3899 [谈笑风生]的更多相关文章

  1. 【洛谷P3899】谈笑风生

    题目大意:给定一棵 N 个节点的有根树,1 号节点为根节点,现给出 Q 个询问,每次询问距离 u 号节点不超过 K 的节点 b,c 为 a 与 b 的后代,求这样的三元组有多少个. 题解:学会了线段树 ...

  2. 洛谷P3899 [湖南集训]谈笑风生(线段树合并)

    题意 题目链接 Sol 线段树合并板子题,目前我看到两种写法,分别是这样的. 前一种每次需要新建一个节点,空间是\(O(4nlogn)\) 后者不需要新建,空间是\(O(nlogn)\)(面向数据算空 ...

  3. 【洛谷 P3899】 [湖南集训]谈笑风生 (主席树)

    题目链接 容易发现\(a,b,c\)肯定是在一条直链上的. 定义\(size(u)\)表示以\(u\)为根的子树大小(不包括\(u\)) 分两种情况, 1.\(b\)是\(a\)的祖先,对答案的贡献是 ...

  4. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  5. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  7. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  8. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  9. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

随机推荐

  1. OGG学习笔记05-OGG的版本

    刚接触OGG的时候,很容易被众多的版本搞晕,虽然官方有提供各版本对应认证OS和DB的表格. 个人认为一个比较简单的方式,是直接去edelivery.oracle.com下载OGG,选定一个大版本后,这 ...

  2. ATM目录结构

    作者:高江平版本:1.0程序介绍: 实现ATM常用功能程序结构:atm实现|——README|——atm #ATM主程序目录| |——bin #ATM执行文件目录| | |——__init__.py| ...

  3. hive使用动态分区时如果动态分区的字段存在空值的问题

    hive的数据是放到hdfs中,当我们的分区字段类型为string时,如果使用动态分区向表中插入数据,而动态分区的那个字段恰好为null或者空字符串,这样hive会为其选一个默认的分区,我们查数据时分 ...

  4. Linux文件系统的硬连接和软连接

    title: Linux文件系统的硬连接和软连接 date: 2018-02-06T20:26:25+08:00 tags: ["文件系统"] categories: [" ...

  5. SqlServer父节点与子节点查询及递归

    在最近老是用到这个SQL,所以记下来了: 1:创建表 CREATE TABLE [dbo].[BD_Booklet]( [ObjID] [int] IDENTITY(1,1) NOT NULL, [P ...

  6. 2017-2018-1 20155228 《数学建模》 MatlabR2017a安装教程

    2017-2018-1 20155228MatlabR2017a安装教程 原版软件和破解补丁的下载 原版软件和破解补丁的下载链接 需要关注微信公众号才能获取下载密码,照办就是了,为了学习嘛哈哈哈 有三 ...

  7. Html textarea 标签

    Html textarea 标签 </body> </html> <!-- textarea 标签输入多行文本框,name="xxx"标识后端获取名称 ...

  8. Docker Overlay 工作原理

    Docker 原生Overlay 网络工作流程 如图:有两个Container 独立的容器节点.他们通过Overlay网路进行通信. 网卡设备 Container eth0:eth0它是Overlay ...

  9. saltstack 基本的批量操作

    centos 6.5 saltstack 2015.5.10 (Lithium) 基本用法 # salt 'DEV-APP-001' cmd.run 'hostname' #指定被控端 # salt ...

  10. 论文笔记:A Structured Self-Attentive Sentence Embedding

    A Structured Self-Attentive Sentence Embedding ICLR 2017 2018-08-19 14:07:29 Paper:https://arxiv.org ...