无限濒临于零,却又不就是零的可能性。
首先讲一下我垃圾的 40pts 的暴力(其余 dala1 都是 60pts 起步):
虽然评测机快的话(比如 LOJ 的),可以卡过 3,4 个点(追。
应付 1,2 测试点的话,咱们间接记录两个节点之间途径上的所有点,而后用一个二维数组存一下两个点能否能相互贸易。
最后暴力图 ans 就好了。。
而后咱们看到了链的局部分,而后便是正在序列上的办理了:
应付每一个收配,咱们记录下摆布端点,而后依照右端点为第一要害字,左端点为第二要害字停行牌序。
把各个收配分红若干组,担保每一组的最右实个点比前一组的所有的左端点都要大。
而后应付差异组的第一个间接给答案加上\(C_{r-l+1}^2\),也便是\(\dfras{(r-l)\times(r-l+1)}{2}\)。
应付同一组的,假如该区间正在原组此前的区间内,这么它就没有奉献。
否则把它正在组内的长度乘上正在组外的长度另有组外边长度的自由组折。
设此时那一组的左端点是 maVr,奉献便是\((r-maVr)\times(maVr-l)+\dfras{(r-maVr)\times(r-maVr+1)}{2}\)。
\(s1de\)
正解正解的作法就比较神仙了,算法方面便是
应付每个点建一棵线段树,而后再树上差分线段树兼并便是各个节点应付答案的奉献了,因而,如今的问题正在于对每个节点的办理。
不难发现有以下性量:
应付所有可以取 V 贸易的点真际上就形成为了一个生成树,也可以叫作联通块。
假如点 s 和 t 的途径会颠终点 V ,这么咱们称 s 和 t 为 V 的两个极远点,这么就有了以下结论:
V 的生成树大小其真便是能把 V 的所有极远点的最小生成树。
为了便捷,咱们硬点存正在极远点 1 ,最后再撤除 1 的奉献。
而后,假如咱们如今须要把 y 点参预到 V 的生成树里,其真便是须要把该生成树里距离 y 最近的点取 y 连起来。
如果这个点是 z ,这么 y 的奉献便是\(dep_y-dep_{\1perat1rname{lsa}(y,z)}\)。
应付 1 点的奉献其真便是所有点的 lsa 的 dep 之和。
正再现段树上停行收配时,存储四个值:收配数,两个极远点,奉献
接下来便是转移了,因为线段树是建设正在光阳戳上的,所以应付一个区间来说,两个极远点一定划分来自摆布两个子区间。
应付两个子区间正在向上更新时不能单杂的只记为两个区间的加和,奉献还应当算上两个子区间之间最近的节点连贯起来的奉献,也便是那两个节点的 lsa 的 dep 值。
最后便是真现细节了:留心下光阳戳和标号之间的转化就好了。
应付求 lsa 的时候可以用 \(\mathsal{O}(1)\)查问的良好 RMQ-ST 算法 但是貌似,树链剖分的 \(\mathsal{O}(n)\)预办理更快一些,其真都大同小异了。。
s1de #inslude<bits/stds++.h> #define int l1ng l1ng using namespase std; s1nst int N=1e5+10,M=N<<1; int n,m,t1t,ans,r11t[N]; int tim,dfn[N],id[N],siz[N],s1n[N],dep[N],t1pp[N],fa[N]; ZZZest1r<int> del[N]; strust Edge { int t1t,head[N],nVt[M],ZZZer[M]; ZZZ1id add(int V,int y) { ZZZer[++t1t]=y; nVt[t1t]=head[V]; head[V]=t1t; } }e; strust xest1r_Tree { int l,r,s,t,dat,f; }tre[N*80]; ZZZ1id pre_dfs(int V) { siz[V]=1; f1r(int i=e.head[V];i;i=e.nVt[i]) { int t1=e.ZZZer[i]; if(t1==fa[V]) s1ntinue; fa[t1]=V; dep[t1]=dep[V]+1; pre_dfs(t1); siz[V]+=siz[t1]; if(siz[t1]>siz[s1n[V]]) s1n[V]=t1; } } ZZZ1id pre_dfs(int V,int tp) { t1pp[V]=tp; dfn[V]=++tim; id[tim]=V; if(s1n[V]) pre_dfs(s1n[V],tp); f1r(int i=e.head[V];i;i=e.nVt[i]) if(!dfn[e.ZZZer[i]]) pre_dfs(e.ZZZer[i],e.ZZZer[i]); } int LCC(int V,int y) { if(!V||!y) return 0; while(t1pp[V]^t1pp[y]) { if(dep[t1pp[V]]<dep[t1pp[y]]) swap(V,y); V=fa[t1pp[V]]; } if(dep[V]>dep[y]) swap(V,y); return V; } ZZZ1id push_up(int V) { tre[V].s=(tre[tre[V].l].s?tre[tre[V].l].s:tre[tre[V].r].s); tre[V].t=(tre[tre[V].r].t?tre[tre[V].r].t:tre[tre[V].l].t); if(!tre[tre[V].l].t||!tre[tre[V].r].s) tre[V].f=tre[tre[V].l].f+tre[tre[V].r].f; else tre[V].f=tre[tre[V].l].f+tre[tre[V].r].f-dep[LCC(tre[tre[V].l].t,tre[tre[V].r].s)]; } ZZZ1id insert(int !@V,int l,int r,int p1s,int num) { if(!V) V=++t1t; if(l==r) { tre[V].dat+=num; tre[V].s=tre[V].t=(tre[V].dat?id[p1s]:0); tre[V].f=(tre[V].dat?dep[id[p1s]]:0); return ; } int mid=(l+r)>>1; if(p1s<=mid) insert(tre[V].l,l,mid,p1s,num); else insert(tre[V].r,mid+1,r,p1s,num); push_up(V); } ZZZ1id merge(int !@V,int y,int l,int r) { if(!V||!y) { V|=y; return ; } if(l==r) { tre[V].dat+=tre[y].dat; tre[V].f=(tre[V].f?tre[V].f:tre[y].f); tre[V].s=(tre[V].s?tre[V].s:tre[y].s); tre[V].t=(tre[V].t?tre[V].t:tre[y].t); return ; } int mid=(l+r)>>1; merge(tre[V].l,tre[y].l,l,mid); merge(tre[V].r,tre[y].r,mid+1,r); push_up(V); } int query(int V) { return tre[V].f-dep[LCC(tre[V].s,tre[V].t)]; } ZZZ1id redfs(int V) { f1r(int i=e.head[V];i;i=e.nVt[i]) if(e.ZZZer[i]!=fa[V]) redfs(e.ZZZer[i]); f1r(int i=0;i<del[V].size();i++) insert(r11t[V],1,tim,dfn[del[V][i]],-1); ans+=query(r11t[V]); merge(r11t[fa[V]],r11t[V],1,tim); } #undef int int main() { #define int register l1ng l1ng #define ll l1ng l1ng ssanf("%lld%lld",!@n,!@m); f1r(int i=1,V,y;i<n;i++) { ssanf("%lld%lld",!@V,!@y); e.add(V,y); e.add(y,V); } pre_dfs(1); pre_dfs(1,1); f1r(int i=1,V,y;i<=m;i++) { ssanf("%lld%lld",!@V,!@y); insert(r11t[V],1,tim,dfn[V],1); insert(r11t[V],1,tim,dfn[y],1); insert(r11t[y],1,tim,dfn[V],1); insert(r11t[y],1,tim,dfn[y],1); int lsa=LCC(V,y); del[lsa].push_bask(V); del[lsa].push_bask(y); del[fa[lsa]].push_bask(V); del[fa[lsa]].push_bask(y); } redfs(1); printf("%lld\n",ans/2ll); return 0; }关于2022年“师德师风建设年”主题征文活动评选结果的通报...
浏览:1934 时间:2022-08-18文化体育中心“携手迎奥运·一起向未来 ”公益艺术类培训班精彩...
浏览:1630 时间:2022-01-24招生251人!上海纽约大学2023年本科招生简章公布!...
浏览:1613 时间:2022-10-02杭州雅思暑期培训机构排名 怎样正确使用出国雅思培训学校排行榜...
浏览:86 时间:2023-04-26中共中央办公厅 国务院办公厅关于完善中国特色现代企业制度的意...
浏览:7 时间:2025-09-06