辣鸡蒟蒻怎么今天才来敲这个模板题

好像还敲了很久的样子

(大雾)

#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[10000005];
vector <int> bl;
vector <int> wl; void buc_push(int x) {
if(x>1e+7) return;
buc[x]=1;
bl.push_back(x);
}
int buc_query(int x) {
if(x<0 || x>1e+7) return 0;
return buc[x];
}
void buc_clear() {
for(int i=0;i<bl.size();i++)
buc[bl[i]]=0;
bl.clear();
} void dfs1(int p,int from) {
siz[p]=1;
msiz[p]=0;
st.push_back(p);
for(int i=0;i<g[p].size();i++) {
int q=g[p][i].first, w=g[p][i].second;
if(q!=from && u[q]==0) {
dfs1(q,p);
siz[p]+=siz[q];
msiz[p]=max(msiz[p],siz[q]);
}
}
} void dfs2(int p,int from) {
for(int i=0;i<g[p].size();i++) {
int q=g[p][i].first, w=g[p][i].second;
if(q!=from && u[q]==0) {
dis[q]=dis[p]+w;
dfs2(q,p);
}
}
} void dfs3(int p,int from) {
for(int i=1;i<=m;i++) {
if(buc_query(k[i]-dis[p])) ans[i]=1;
}
for(int i=0;i<g[p].size();i++) {
int q=g[p][i].first, w=g[p][i].second;
if(q!=from && u[q]==0) {
dfs3(q,p);
}
}
wl.push_back(dis[p]);
} int findroot(int p) {
st.clear();
dfs1(p,0);
int r=0,rv=1e+9;
for(int i=0;i<st.size();i++) {
msiz[st[i]]=max(msiz[st[i]],siz[p]-siz[st[i]]);
if(msiz[st[i]]<rv) r=st[i],rv=msiz[st[i]];
}
return r;
} void calc(int p) {
dis[p]=0;
dfs2(p,0);
buc_clear();
buc_push(0);
for(int i=0;i<g[p].size();i++) {
int q=g[p][i].first, w=g[p][i].second;
if(u[q]==0) {
dfs3(q,0);
for(int j=0;j<wl.size();j++) {
buc_push(wl[j]);
}
wl.clear();
}
}
} void solve(int p) {
int r=findroot(p);
u[r]=1;
calc(r);
for(int i=0;i<g[r].size();i++) {
int q=g[r][i].first, w=g[r][i].second;
if(u[q]==0) {
solve(q);
}
}
} signed main() {
scanf("%lld%lld",&n,&m);
for(int i=1;i<n;i++) {
int t1,t2,t3;
scanf("%lld%lld%lld",&t1,&t2,&t3);
g[t1].push_back(make_pair(t2,t3));
g[t2].push_back(make_pair(t1,t3));
}
for(int i=1;i<=m;i++) scanf("%lld",&k[i]);
solve(1);
for(int i=1;i<=m;i++) {
cout<<(ans[i]?"AYE":"NAY")<<endl;
}
}

[P3806] 【模板】点分治 - 点分治的更多相关文章

  1. 洛谷 P3806 【模板】点分治1-树分治(点分治,容斥版) 模板题-树上距离为k的点对是否存在

    P3806 [模板]点分治1 题目背景 感谢hzwer的点分治互测. 题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在. 输入格式 n,m 接下来n-1条边a,b,c描述a到b有一条长度 ...

  2. POJ 1741.Tree and 洛谷 P4178 Tree-树分治(点分治,容斥版) +二分 模板题-区间点对最短距离<=K的点对数量

    POJ 1741. Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 34141   Accepted: 11420 ...

  3. Codeforces 161.D. Distance in Tree-树分治(点分治,不容斥版)-树上距离为K的点对数量-蜜汁TLE (VK Cup 2012 Round 1)

    D. Distance in Tree time limit per test 3 seconds memory limit per test 512 megabytes input standard ...

  4. 【题解】P4755 Beautiful Pair(启发式合并的思路+分治=启发式分治)

    [题解]P4755 Beautiful Pair upd: 之前一个first second烦了,现在AC了 由于之前是直接抄std写的,所以没有什么心得体会,今天自己写写发现 不知道为啥\(90\) ...

  5. CDQ分治 & 整体分治

    Part 1:CDQ分治 CDQ分治讲解博客 可以把CDQ分治理解为类似与归并排序求逆序对个数的一种分治算法(至少我现在是这么想的).先处理完左右两边各自对答案的贡献,在处理跨越左右两边的对答案的贡献 ...

  6. [洛谷P3806] [模板] 点分治1

    洛谷 P3806 传送门 这个点分治都不用减掉子树里的了,直接搞就行了. 注意第63行 if(qu[k]>=buf[j]) 不能不写,也不能写成>. 因为这个WA了半天...... 如果m ...

  7. 洛谷 4721 【模板】分治 FFT——分治FFT / 多项式求逆

    题目:https://www.luogu.org/problemnew/show/P4721 分治FFT:https://www.cnblogs.com/bztMinamoto/p/9749557.h ...

  8. 洛谷 P4721 [模板]分治FFT —— 分治FFT / 多项式求逆

    题目:https://www.luogu.org/problemnew/show/P4721 分治做法,考虑左边对右边的贡献即可: 注意最大用到的 a 的项也不过是 a[r-l] ,所以 NTT 可以 ...

  9. luoguU60884 【模板】动态点分治套线段树

    题目连接:https://www.luogu.org/problemnew/show/U60884 题意:有N个点,标号为1∼N,用N−1条双向带权通道连接,保证任意两个点能互相到达. Q次询问,问从 ...

随机推荐

  1. vue(二)--条件语句

    条件语句:v-if     v-else   v-else-if    v-show v-else .v-else-if 必须跟在 v-if 或者 v-else-if之后. 1.v-if <bo ...

  2. 通过shell模拟redis-trib.rb info的输出

    需求:模拟redis-trib.rb info ip:port输出的结果 如: [redis@lxd-vm3 ~]$ redis-trib.rb info 5.5.5.101:29001 /usr/l ...

  3. centos 源码编译mysql5.7

    1- 源码安装mysql5.7 [自动安装脚本:https://files-cdn.cnblogs.com/files/lemanlai/make_mysql.sh] groupadd mysql u ...

  4. Case Study - 预测肺癌

    Problem 肺癌是发病率和死亡率增长最快,对人群健康和生命威胁最大的恶性肿瘤之一.近50年来许多国家都报道肺癌的发病率和死亡率均明显增高,男性肺癌发病率和死亡率均占所有恶性肿瘤的第一位,女性发病率 ...

  5. ffmpeg基本功能使用

    任务描述:由给定图像序列合成 24fps 视频 方案一 直接对图像进行操作,适用于图像名比较规范且默认即为所需顺序 ffmpeg -f image2 -i ./images_crop_%d.png - ...

  6. plsql导出查询结果,导出csv文件。但是类似身份证等超出15位的数据后三位显示问题,和科学计数法的格式问题

    问题描述:     plsql导出查询结果时,如果使用导出查询结果,使用excelfile会特别慢.     所以我们一般使用csv文件,然后在excel中新建空白文档,在数据菜单中导入数据,但是导出 ...

  7. 剑指offer-面试题23-链表中环的入口节点-双指针

    /* 题目: 如果链表中包含环,如何找出环的入口? */ /* 思路: 双指针: 1.判断是否有环. fast指针一次2步,slow指针一次1步,当fast与slow相遇时,说明有环. 2.判断环路中 ...

  8. 08-SV面向对象编程的高级技巧指南

    1.原始类与扩展类 (1)原始类被称为父类或者超类,扩展类被称为派生类或者子类.扩展类可以直接访问原始类和其本身的所有变量,应该将原始类中的子程序定义成虚拟的,这样它们就可以在扩展类中重定义.new函 ...

  9. win10专业工作站版密钥|win10专业工作站版key|win10专业工作站版激活码

    一.windows10专业工作站零售版密钥 永久激活 Win 10 ProfessionalWorkstation Retail [Key]:DXG7C-N36C4-C4HTG-X4T3X-2YV77 ...

  10. 微信小程序报错TypeError: this.setData is not a function

    今天在练习小程序的时候,遇到小程序报错 对于处于小白阶段的我,遇到这种报错,真还不知道是错从何来,只有一脸蒙逼,后来通过查询,终于知道了问题所在,下面对这一问题做一记录 小程序默认中是这么写的 onL ...