题目戳我

\(\text{Solution:}\)

考虑点分治。对于这个两点之间,它意味着这点对必须是不一样的。

考虑用双指针统计答案。显然,对于两个数\(a,b\),要让\(a+b=k,a\)越大则\(b\)越小。于是可以用双指针统计答案。

剩下的就是一个点分治板子。

GrNB!!!

#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+10;
const int inf=(1<<30);
int tot,head[MAXN],siz[MAXN],S,k,n,sum[MAXN];
struct edge{
int nxt,to,dis;
}e[MAXN];
int ms,mson[MAXN],rt,ans;
bitset<MAXN>vis;
inline void add(int x,int y,int w){
e[++tot].to=y;
e[tot].nxt=head[x];
e[tot].dis=w;
head[x]=tot;
}
void Gr(int x,int fa){
siz[x]=1;mson[x]=0;
for(int i=head[x];i;i=e[i].nxt){
int j=e[i].to;
if(vis[j]||j==fa)continue;
Gr(j,x);siz[x]+=siz[j];
if(siz[j]>mson[x])mson[x]=siz[j];
}
if(S-siz[x]>mson[x])mson[x]=S-siz[x];
if(ms>mson[x])rt=x,ms=mson[x];
}
int t,tt,dis[MAXN],tr[MAXN];
void Getdis(int x,int fa,int d){
dis[++t]=d;
for(int i=head[x];i;i=e[i].nxt){
int j=e[i].to;
if(vis[j]||j==fa)continue;
Getdis(j,x,d+e[i].dis);
}
}
void solve(int x,int d,int fg){
t=0;Getdis(x,0,d);
tt=0;sort(dis+1,dis+t+1);
int l=1,r=t;
while(l<=r){
if(dis[l]+dis[r]<=k){ans+=(r-l)*fg,++l;}
else --r;
}
}
void work(int x,int s){
vis[x]=1;solve(x,0,1);
for(int i=head[x];i;i=e[i].nxt){
int j=e[i].to;
if(vis[j])continue;
solve(j,e[i].dis,-1);
ms=inf;rt=0;
S=siz[j]<siz[x]?siz[j]:(s-siz[x]);
Gr(j,0);work(rt,S);
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<n;++i){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add(y,x,z);
}
scanf("%d",&k);
rt=0;ms=inf;S=n;Gr(1,0);work(rt,S);
printf("%d\n",ans);
return 0;
}

第一次写的时候犯了一个浅显的错误:相加为\(k\)的路径并不是只找到最小的路径相匹配的最大路径即可,它并不存在一个总包含的关系。(错误要点)

【题解】Tree的更多相关文章

  1. 2018HN省队集训

    HNOI2018省队集训 Day 1 流水账 T1 tree 换根+求\(lca\)+求子树和,一脸bzoj3083遥远的国度的既视感.子树和讨论一下就好了,\(lca\)?也是大力讨论一波. 先写了 ...

  2. C#版 - 226. Invert Binary Tree(剑指offer 面试题19) - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - 2 ...

  3. [LeetCode 题解]: Binary Tree Preorder Traversal

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Given a bi ...

  4. [LeetCode 题解]: Symmetric Tree

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述   Given a ...

  5. [LeetCode 题解]: Maximum Depth of Binary Tree

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  6. 竞赛题解 - Broken Tree(CF-758E)

    Broken Tree(CF-758E) - 竞赛题解 贪心复习~(好像暴露了什么算法--) 标签:贪心 / DFS / Codeforces 『题意』 给出一棵以1为根的树,每条边有两个值:p-强度 ...

  7. Codeforces Round #530 (Div. 2):D. Sum in the tree (题解)

    D. Sum in the tree 题目链接:https://codeforces.com/contest/1099/problem/D 题意: 给出一棵树,以及每个点的si,这里的si代表从i号结 ...

  8. 【题解】Digit Tree

    [题解]Digit Tree CodeForces - 716E 呵呵以为是数据结构题然后是淀粉质还行... 题目就是给你一颗有边权的树,问你有多少路径,把路径上的数字顺次写出来,是\(m\)的倍数. ...

  9. 【题解】CF611H New Year and Forgotten Tree

    [题解]CF611H New Year and Forgotten Tree 神题了... 题目描述 给定你一棵树,可是每个节点上的编号看不清了,只能辨别它的长度.现在用问号的个数代表每个节点编号那个 ...

  10. 【题解】[P4178 Tree]

    [题解]P4178 Tree 一道点分治模板好题 不知道是不是我见到的题目太少了,为什么这种题目都是暴力开值域的桶QAQ?? 问点对,考虑点分治吧.直接用值域树状数组开下来,统计的时候直接往树状数组里 ...

随机推荐

  1. 【转】Android截屏

     http://blog.csdn.net/xww810319/article/details/17607749 Android截屏浅析 链接:http://blog.sina.com.cn/s/bl ...

  2. vmware-workstation迁移虚拟机 15pro到12版本

    最近将测试的几台虚拟机进行了迁移,有几个点要注意,分享一下 1.环境介绍: 源服务器-ip-172.16.96.x 目标服务器-ip-172.16.96.x VMware版本-VMwareworkst ...

  3. java初探(1)之登录总结

    登录总结 前几章总结了登录各个步骤中遇到的问题,现在完成的做一个登录的案例,其难点不在于实现功能,而在于抽象各种功能模块,提高复用性,较低耦合度. 前端页面: 对于前端页面来说,不是后端程序员要考虑的 ...

  4. 《神经网络的梯度推导与代码验证》之vanilla RNN前向和反向传播的代码验证

    在<神经网络的梯度推导与代码验证>之vanilla RNN的前向传播和反向梯度推导中,我们学习了vanilla RNN的前向传播和反向梯度求导,但知识仍停留在纸面.本篇章将基于深度学习框架 ...

  5. php中的加密解密模块-mcrypt

    <?php /* 打开加密算法和模式 */ $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); /* 创建初始向量,并且检测密钥长度 ...

  6. BasicInterpreter2 改进版,简化了print函数

    源码:https://files.cnblogs.com/files/heyang78/BasicInterpreter2-20200601-3.rar 改进后使得变量和字符串可以一起输出了. 输入脚 ...

  7. Physics Experiment(POJ 3684)

    原题如下: Physics Experiment Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3583   Accepte ...

  8. 第3课 - 启航Lua之路

    第3课 - 启航Lua之路 1. Lua中的变量 (1)变量:全局变量和局部变量 — Lua中支持全局变量和局部变量的概念 全局变量:直接定义变量名,并复制 a = 1;   -- 用 ; 结束当前语 ...

  9. java键对值SHA256加密接口请求

    import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.htt ...

  10. 我的Python自学之路-003 字符串的知识

    '''字符串是以引号或者单引号括起来的任意文本,例如"123","asdfjk",'adfa'引号或者单引号,只是一种表示方法,并不是字符串的一部分如果字符串本 ...