博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1316: 树上的询问
阅读量:4692 次
发布时间:2019-06-09

本文共 1763 字,大约阅读时间需要 5 分钟。

本来看一眼点分治,感觉点分治不太想写,所以去写 $dsu\ on\ tree$....

但是为了保留儿子的信息就不能维护当前节点到儿子节点的距离,只能维护根到各个节点的距离

而且还不能因为距离大于询问距离就不存了,因为相减后可能会等于

然后因为距离太大所以只能 $map$ 维护,然后就 $T$ 飞了...

所以还是好好写点分治吧......

#include
#include
#include
#include
#include
using namespace std;typedef long long ll;inline int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f;}const int N=1e5+7,M=1e6+7,INF=1e9+7;int n,m,Qmax,q[N],ans[N];int fir[N],from[N<<1],to[N<<1],val[N<<1],cntt;inline void add(int a,int b,int c){ from[++cntt]=fir[a]; fir[a]=cntt; to[cntt]=b; val[cntt]=c;}int sz[N],mx[N],tot,rt;bool vis[N];void find_rt(int x,int fa){ mx[x]=0; sz[x]=1; for(int i=fir[x];i;i=from[i]) { int &v=to[i]; if(v==fa||vis[v]) continue; find_rt(v,x); sz[x]+=sz[v]; mx[x]=max(mx[x],sz[v]); } mx[x]=max(mx[x],tot-sz[x]); if(mx[x]
Qmax) return; st[++Top]=dis; for(int i=fir[x];i;i=from[i]) { int &v=to[i]; if(v==fa||vis[v]) continue; dfs(v,x,dis+val[i]); }}void work(int x){ T[0]=1; for(int i=fir[x];i;i=from[i]) { int &v=to[i]; if(vis[v]) continue; Top=0; dfs(v,x,val[i]); for(int j=1;j<=Top;j++) { int d=st[j]; for(int k=1;k<=m;k++) if(q[k]>=d && T[q[k]-d]) ans[k]=1; } for(int j=1;j<=Top;j++) T[st[j]]=1,d[++dd]=st[j]; } for(int i=1;i<=dd;i++) T[d[i]]=0; dd=0;}void solve(int x){ vis[x]=1; work(x); for(int i=fir[x];i;i=from[i]) { int &v=to[i]; if(vis[v]) continue; tot=sz[v]; rt=0; find_rt(v,0); solve(rt); }}int main(){ mx[0]=INF; n=read(),m=read(); int a,b,c; for(int i=1;i

 

转载于:https://www.cnblogs.com/LLTYYC/p/11464696.html

你可能感兴趣的文章
Linux shell 命令判断执行语法 ; , && , ||
查看>>
vim代码格式化插件clang-format
查看>>
RTP Payload Format for Transport of MPEG-4 Elementary Streams over http
查看>>
Java环境变量设置
查看>>
【JBPM4】判断节点decision 方法3 handler
查看>>
filter 过滤器(监听)
查看>>
node启动时, listen EADDRINUSE 报错;
查看>>
杭电3466————DP之01背包(对状态转移方程的更新理解)
查看>>
kafka中的消费组
查看>>
python--注释
查看>>
SQL case when else
查看>>
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>
我的第一篇博客
查看>>
【C++算法与数据结构学习笔记------单链表实现多项式】
查看>>
C#垃圾回收机制
查看>>
31、任务三十一——表单联动
查看>>
python之hasattr、getattr和setattr函数
查看>>
maven使用阿里镜像配置文件
查看>>
Copy code from eclipse to word, save syntax.
查看>>