【题解】Tree
\(\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的更多相关文章
- 2018HN省队集训
HNOI2018省队集训 Day 1 流水账 T1 tree 换根+求\(lca\)+求子树和,一脸bzoj3083遥远的国度的既视感.子树和讨论一下就好了,\(lca\)?也是大力讨论一波. 先写了 ...
- C#版 - 226. Invert Binary Tree(剑指offer 面试题19) - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - 2 ...
- [LeetCode 题解]: Binary Tree Preorder Traversal
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a bi ...
- [LeetCode 题解]: Symmetric Tree
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a ...
- [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 ...
- 竞赛题解 - Broken Tree(CF-758E)
Broken Tree(CF-758E) - 竞赛题解 贪心复习~(好像暴露了什么算法--) 标签:贪心 / DFS / Codeforces 『题意』 给出一棵以1为根的树,每条边有两个值:p-强度 ...
- 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号结 ...
- 【题解】Digit Tree
[题解]Digit Tree CodeForces - 716E 呵呵以为是数据结构题然后是淀粉质还行... 题目就是给你一颗有边权的树,问你有多少路径,把路径上的数字顺次写出来,是\(m\)的倍数. ...
- 【题解】CF611H New Year and Forgotten Tree
[题解]CF611H New Year and Forgotten Tree 神题了... 题目描述 给定你一棵树,可是每个节点上的编号看不清了,只能辨别它的长度.现在用问号的个数代表每个节点编号那个 ...
- 【题解】[P4178 Tree]
[题解]P4178 Tree 一道点分治模板好题 不知道是不是我见到的题目太少了,为什么这种题目都是暴力开值域的桶QAQ?? 问点对,考虑点分治吧.直接用值域树状数组开下来,统计的时候直接往树状数组里 ...
随机推荐
- 【深入理解Java虚拟机】Java虚拟机运行时数据区
Java虚拟机运行时数据区 线程私有 程序计数器 1.当前线程所执行的字节码的行号指示器. 2.唯一不会发生OutOfMemoryError的区域 3.如果执行的是java方法,计数器值为虚拟机字节码 ...
- css学习入门-第一个css程序
1.css的优势: --内容与表现分离 --网页结构统一,可以实现复用 --样式丰富 2.css的3种导入方式 2.1行内样式 <h1 style="color: red"& ...
- C++中的输入输出
update&fixed: 经过实测,io解绑在各大oj以及本地评测软件上都劣于scanf 所以在大数据的情况下还是推荐尽量使用scanf! ! ! ! 众所周知,C++自带了各种输入方式 比 ...
- .Net在Windows上使用Jenkins做CI/CD的那些事
背景 最近入职了一家新公司,公司各个方面都让我非常的满意,我也怀着紧张与兴奋的心情入职后,在第一天接到了领导给我的第一个任务——把整个项目的依赖引用重新整理并实施项目的CI/CD. 本篇的重点主要分享 ...
- 关于Vue-Router的那些事儿
Vue-Router Vu-router是Vue.js的官方路由管理器,方便于构建页面,在我们的使用过程中,一般是在router的index.js文件中配置对应的组件和对应的路径 主要的功能 嵌套路由 ...
- sublime3 激活
起因 这段时间sublime一直抽风,每次打开都提示让我更新. 身为强迫症的我当然不能忍! 方法 关闭自动更新 点击菜单栏"Preferences"=> "Sett ...
- Linux下vim的安装及配置
目录 一.vim的下载 二.vim的基本知识 三.vim的基本配置 四.vim与外部文件的复制粘贴 一.vim的下载 Ubuntu系统,输入命令: sudo apt install vim Cento ...
- 2020重新出发,JAVA高级,JVM种设计模式
Java的23种设计模式全面解析 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性.稳健 ...
- selenuim常用api
1.通过代码跳转到页面的方法:前提:已安装驱动,并加入到path下 安装ie驱动或火狐驱动的情况: 2.当链接跳转按钮在页面最上方时,用window.scrollTo(0,0);显示在页面最上方后,再 ...
- Openstack 一直在调度中解决
查看日志/var/log/nova/nova-scheduler.log,/var/log/nova/nova-compute.log ,均无报错 查看/var/log/nova/nova-condu ...