洛谷 P3806 传送门

这个点分治都不用减掉子树里的了,直接搞就行了。

注意第63行 if(qu[k]>=buf[j]) 不能不写,也不能写成>。

因为这个WA了半天......

如果memset清空ex数组显然是会T的,所以开一个bef用来记录需要清空哪个地方。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int n,m;
int hd[],to[],nx[],len[],ec;
int qu[],ans[]; void edge(int af,int at,int el)
{
to[++ec]=at;
len[ec]=el;
nx[ec]=hd[af];
hd[af]=ec;
} int rt,tot;
int sz[],mx[];
int del[]; void weigh(int p,int fa)
{
sz[p]=;mx[p]=;
for(int i=hd[p];i;i=nx[i])
{
int t=to[i];
if(t==fa||del[t])continue;
weigh(t,p);
sz[p]+=sz[t];
mx[p]=max(mx[p],sz[t]);
}
mx[p]=max(mx[p],tot-sz[p]);
if(mx[p]<mx[rt])rt=p;
} int dis[];
int buf[],tp,ex[],bef[],btp; void dfs(int p,int fa)
{
buf[++tp]=dis[p];
for(int i=hd[p];i;i=nx[i])
{
int t=to[i];
if(fa==t||del[t])continue;
dis[t]=dis[p]+len[i];
dfs(t,p);
}
} void count(int p)
{
btp=;
for(int i=hd[p];i;i=nx[i])
{
int t=to[i];
if(del[t])continue;
tp=;dis[t]=len[i];
dfs(t,p);
for(int j=;j<=tp;j++)
for(int k=;k<=m;k++)
if(qu[k]>=buf[j])
ans[k]|=ex[qu[k]-buf[j]];
for(int j=;j<=tp;j++)
bef[++btp]=buf[j],ex[buf[j]]=;
}
for(int i=;i<=btp;i++)ex[bef[i]]=;
} void conquer(int p)
{
del[p]=ex[]=;
count(p);
for(int i=hd[p];i;i=nx[i])
{
int t=to[i];
if(del[t])continue;
rt=;tot=sz[t];
weigh(t,);
conquer(rt);
}
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)
{
int ff,tt,vv;
scanf("%d%d%d",&ff,&tt,&vv);
edge(ff,tt,vv);
edge(tt,ff,vv);
}
for(int i=;i<=m;i++)scanf("%d",&qu[i]);
mx[]=tot=n;
weigh(,);
conquer(rt);
for(int i=;i<=m;printf("\n"),i++)
printf(ans[i]?"AYE":"NAY");
return ;
}

[洛谷P3806] [模板] 点分治1的更多相关文章

  1. 洛谷 P3806 (点分治)

    题目:https://www.luogu.org/problem/P3806 题意:一棵树,下面有q个询问,问是否有距离为k的点对 思路:牵扯到树上路径的题都是一般都是点分治,我们可以算出所有的路径长 ...

  2. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

  3. 洛谷 P3806 点分治模板

    题目:https://www.luogu.org/problemnew/show/P3806 就是点分治~ 每次暴力枚举询问即可,复杂度是 nmlogn: 注意 tmp[0]=1 ! 代码如下: #i ...

  4. 洛谷P3810 陌上花开 CDQ分治(三维偏序)

    好,这是一道三维偏序的模板题 当然没那么简单..... 首先谴责洛谷一下:可怜的陌上花开的题面被无情的消灭了: 这么好听的名字#(滑稽) 那么我们看了题面后就发现:这就是一个三维偏序.只不过ans不加 ...

  5. 洛谷P3375 [模板]KMP字符串匹配

    To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...

  6. LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)

    为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...

  7. 【AC自动机】洛谷三道模板题

    [题目链接] https://www.luogu.org/problem/P3808 [题意] 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过. [题解] 不再介绍基础知识了,就是裸的模 ...

  8. 洛谷-P5357-【模板】AC自动机(二次加强版)

    题目传送门 -------------------------------------- 过年在家无聊补一下这周做的几道AC自动机的模板题 sol:AC自动机,还是要解决跳fail边产生的重复访问,但 ...

  9. 洛谷.1919.[模板]A*B Problem升级版(FFT)

    题目链接:洛谷.BZOJ2179 //将乘数拆成 a0*10^n + a1*10^(n-1) + ... + a_n-1的形式 //可以发现多项式乘法就模拟了竖式乘法 所以用FFT即可 注意处理进位 ...

随机推荐

  1. Linux系统提示无法获得锁

    这种情况出现主要是因为软件更新或者安装时出现错误. 删除掉两个临时文件即可 sudo rm /var/lib/dpkg/lock sudo rm /var/cache/apt/archive/lock ...

  2. oi笔记——抽象的深度优先搜索

    oi笔记--抽象的深度优先搜索 例题: \(N个数中选K个数,选出的和要为sum\) 例题分析: 对于每个点,我们可以按"选"和"不选"进行搜索,如图: 或者0 ...

  3. 题解 P4942 【小凯的数字】

    题目 为什么看到很多题解区的 dalao 都用逆元?是我太菜了吧 [分析] 首先,根据弃九验算法的原理,显然可以得到:一个 \(n\) 位数 \(a_1a_2a_3\dots a_n\equiv a_ ...

  4. 17.3.12---xmlrpclib模块

    1----XML-RPC是一种使用xml文本的方式利用http协议传输命令和数据的rpc基址,我们用pythom的想mlrpclib模块可以让程序与其他任何语言编写的XML-RPC服务器进行数据传输 ...

  5. 1.Redis简介/配置文件

    redis简介 redis使用入门 redis安装 http://www.runoob.com/redis/redis-install.html [root@yz---- bin]# ll total ...

  6. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第一天】

    本人做过一年的MATLAB编程和简单维护过VB和C++的项目.是跟着网上获得的黑马的Java双元视频课来自学入门Java知识和常用框架的使用. 淘淘商城(SpringMVC+Spring+Mybati ...

  7. JS变量、作用域及内存

    1.动态属性var box = new Object();box.name = 'lee';alert(box.name); var box = 'lee';box.age = '28';alert( ...

  8. 2.node。框架express

    node.js就是内置的谷歌V8引擎,封装了一些对文件操作,http请求处理的方法 使你能够用js来写后端代码 用node.js开发脱离浏览器的js程序,主要用于工具活着服务器,比如文件处理. 用最流 ...

  9. Deep-Learning-with-Python] 文本序列中的深度学习

    https://blog.csdn.net/LSG_Down/article/details/81327072 将文本数据处理成有用的数据表示 循环神经网络 使用1D卷积处理序列数据 深度学习模型可以 ...

  10. p2p gossip 结构化 非结构化

    p2p P2P中文名字叫对等网络,网络中节点地位一致.    QQ其实不算P2P,因为QQ利用了中央服务器.   Hbase这样的分布式系统,因为有Hmaster节点,也不算是P2P网络:   cas ...