首页 > TAG信息列表 > P3806

P3806 【模板】点分治1题解

题干 给定一棵有 n 个点的树,询问树上距离为 k的点对是否存在。 分析 Part1:点分治的意义  分治都懂吧,将问题划分为若干个子问题,最后合并答案 可以类比归并排序,冒泡排序的复杂度为O(n^2),而归并则是稳定的O(n log2 n) 点分治同理,我们将每个树划分为若干个子树,然后分开来处理,这样

洛谷 P3806 【模板】点分治1

传送门 #include <bits/stdc++.h> using namespace std; using ll = long long; using p = pair<int, int>; const int maxn(1e4 + 10); const int maxm(1e2 + 10); const int maxk(2e7 + 10); int ecnt, head[maxn]; int que[maxm], ans[maxn]; int rt, tot, root[

[P3806] 【模板】点分治 - 点分治

辣鸡蒟蒻怎么今天才来敲这个模板题 好像还敲了很久的样子 (大雾) #include <bits/stdc++.h> using namespace std; #define int long long const int N = 10005; vector<pair<int,int> > g[N]; int dis[N],siz[N],msiz[N],n,m,k[N],ans[N],u[N]; vector <int> st; int buc[100000

洛谷 P3806 【模板】点分治1

typedef long long LL; typedef pair<LL, LL> PLL; const int maxm = 1e4+5; const int maxn = 1e7+5; int ans[maxn]; int head[maxm], cnt, siz[maxm], mxson[maxm], mxsum, rootsum, root, dis[maxm], point; bool vis[maxm]; struct Node { int v, next, va

洛谷P3806 点分治1

https://www.luogu.com.cn/problem/P3806 时隔一年半复习一下点分治。。。。 点分治模板就是nlogn的,然后内部每次要排序还要二分就是nlog^2n的复杂度。。。。812ms飘过 不过看到网上一些平方求是否有K的组合也过了??? 显然是要先合并值相同的,再枚举一个值为x的,二分找k-x的吧。。。

P3806 【模板】点分治1

模板*0x3f3f3f3f 代码: #include <bits/stdc++.h>using namespace std;const int maxn=500005;const int inf=0x3f3f3f3f;int n,m,a,b,c,ask[maxn];bool have[maxn*20],can[maxn],vis[maxn];vector<int> g[maxn],v[maxn];int sum,sz[maxn],son[maxn],rt;int rem[maxn

P3806 【模板】点分治1

https://www.luogu.org/problem/P3806 #include <iostream>#include <cstdio>#include <queue>#include <algorithm>#include <cmath>#include <cstring>#define inf 2147483647#define N 1000010#define p(a) putchar(a)#define For(i,

【模版】【P3806】点分治

(7.17)早就想学点分治了……今天状态不太在线,眯一会写篇笔记来理理思路。 --------------------------------------------------------------------   (静态)点分治是一种利用无根树性质暴力分治的思想,可以在O(nlog^2n)的复杂度下统计可带权树上的路径信息。   像是这道例题,多组询

P3806 【模板】点分治1

题目背景 感谢hzwer的点分治互测。 题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在。 输入输出格式 输入格式: n,m接下来n-1条边a,b,c描述a到b有一条长度为c的路径 接下来m行每行询问一个K 输出格式: 对于每个K每行输出一个答案,存在输出“AYE”,否则输出”NAY”(不包

Luogu P3806 点分治模板1

题意:   给定一棵有n个点的树询问树上距离为k的点对是否存在。   分析:   这个题的询问和点数都不多(但是显然暴力是不太好过的,即使有人暴力过了)   这题应该怎么用点分治呢。显然,一个模板题,我们直接用套路,每次找重心,对于这个重心处理,过当前点的符合要求的路径。   我们可以看

洛谷P3806 点分治1 板子题

正解:点分治 解题报告: 传送门! 话说我jio得好迷啊,,,为什么有点分治1麻油点分治2???那要这个1有何用啊,,,? 然后不做学习笔记了写在分治学习总结辣 umm下课辣我回家写QAQ先先先咕着辣QAQ!

【模板】P3806点分治1

【模板】P3806 【模板】点分治1 很好的一道模板题,很无脑经典。 讲讲淀粉质吧,很营养,实际上,点分治是树上的分治算法。根据树的特性,树上两点的路径只有一下两种情况: 路径经过根\((*)\) 路径不经过根\((**)\) 显然对于\((**)\)我们可以通过指定一个新的根使得\((**)\)变成一个子问题