博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树链剖分+线段树模板 [BZOJ][1036][ZJOI2008]树的统计Count
阅读量:5047 次
发布时间:2019-06-12

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

#include
using namespace std; const int MAXN=30000+233;const int INF=0x3f3f3f3f; struct Edge { int to,nxt;} e[MAXN<<2]; int n,q,x,y,cnt=0,dfnt=0;int head[MAXN],val[MAXN];int dep[MAXN],siz[MAXN],fa[MAXN],son[MAXN],tp[MAXN],pos[MAXN];char opt[233]; int read() { int x=0,f=1; char ch=getchar(); while (!isdigit(ch)) { if (ch=='-') f=-1; ch=getchar(); } while (isdigit(ch)) x=x*10+ch-'0',ch=getchar(); return x*f;} void add_edge(int u,int v) { e[++cnt].nxt=head[u]; head[u]=cnt; e[cnt].to=v;} void dfs1(int x) { siz[x]=1; for (int i=head[x]; i; i=e[i].nxt) { int v=e[i].to; if (v!=fa[x]) { fa[v]=x; dep[v]=dep[x]+1; dfs1(v); siz[x]+=siz[v]; if (!son[x]||siz[v]>siz[son[x]]) son[x]=v; } }} void dfs2(int x,int TOP) { pos[x]=++dfnt; tp[x]=TOP; if (!son[x]) return; dfs2(son[x],TOP); for (int i=head[x]; i; i=e[i].nxt) { int v=e[i].to; if (v!=son[x]&&v!=fa[x]) dfs2(v,v); }} namespace Segment_Tree { struct Tree { int sum,mt; } t[MAXN<<3]; void push_up(int root) { t[root].sum=t[root<<1].sum+t[root<<1|1].sum; t[root].mt=max(t[root<<1].mt,t[root<<1|1].mt); } void update(int root,int l,int r,int qt,int dat) { if (l==r) { t[root].mt=t[root].sum=dat; return; } int mid=l+r>>1; if (qt<=mid) update(root<<1,l,mid,qt,dat); else update(root<<1|1,mid+1,r,qt,dat); push_up(root); } long long query_max(int root,int l,int r,int ql,int qr) { if (ql<=l&&qr>=r) return t[root].mt; long long ans=-INF; int mid=l+r>>1; if (ql<=mid) ans=max(ans,query_max(root<<1,l,mid,ql,qr)); if (qr>mid) ans=max(ans,query_max(root<<1|1,mid+1,r,ql,qr)); return ans; } long long query_sum(int root,int l,int r,int ql,int qr) { if (ql<=l&&qr>=r) return t[root].sum; long long ans=0; int mid=l+r>>1; if (ql<=mid) ans+=query_sum(root<<1,l,mid,ql,qr); if (qr>mid) ans+=query_sum(root<<1|1,mid+1,r,ql,qr); return ans; } long long Solve_max(int l,int r) { long long ans=-INF; for (; tp[x]!=tp[y]; x=fa[tp[x]]) { if (dep[tp[x]]

 

转载于:https://www.cnblogs.com/QingCai-DCF/p/9529117.html

你可能感兴趣的文章
编译Linux驱动程序 遇到的问题
查看>>
大型分布式网站架构技术总结
查看>>
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>
Activity和Fragment生命周期对比
查看>>
OAuth和OpenID的区别
查看>>
android 分辨率自适应
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
国外媒体推荐的5款当地Passbook通行证制作工具
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
hibernate生成表时,有的表可以生成,有的却不可以 2014-03-21 21:28 244人阅读 ...
查看>>
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>