日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JZOJ 5956. 【NOIP2018模拟11.7A组】easy LCA

發(fā)布時(shí)間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 5956. 【NOIP2018模拟11.7A组】easy LCA 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Description

Input

Output

輸出一行一個(gè)整數(shù),表示所求的所有連續(xù)子段的權(quán)值和。

Sample Input

6
1 2
2 6
6 3
3 4
6 5
1 2 3 4 5 6

Sample Output

51

Data Constraint

Solution

  • 這題做法多種多樣,什么線段樹(shù)合并、分治……

  • 我用的方法比較簡(jiǎn)單好打,用個(gè)單調(diào)棧就好了。

  • 我們先對(duì)相鄰兩點(diǎn)求出其lca,即:a[i]=lca(p[i],p[i+1])a[i]=lca(p[i],p[i+1])a[i]=lca(p[i],p[i+1])

  • 這個(gè)我用的是樹(shù)鏈剖分求lca,跑得比較快一些。

  • 于是我們就得到了 n?1n-1n?1 個(gè)點(diǎn)。

  • 易知一段區(qū)間的點(diǎn)的lca就是對(duì)應(yīng)的一段 a[i]a[i]a[i] 中深度最小的那個(gè)。

  • 那么我們對(duì)于每個(gè) a[i]a[i]a[i] 計(jì)算其作為最終lca的答案。

  • (一個(gè) a[i]a[i]a[i] 對(duì)應(yīng)著兩個(gè)點(diǎn),所以答案最終還要加上 ∑dep[p[i]]\sum dep[p[i]]dep[p[i]]

  • 對(duì)于每個(gè) a[i]a[i]a[i] ,我們希望求出 l[i]l[i]l[i] ,表示以它為lca的一段點(diǎn)最左能擴(kuò)展到哪里。

  • 于是我們維護(hù)一個(gè)單調(diào)上升 aaa 的棧,遇到一個(gè)新的 a[i]a[i]a[i] ,就把比 a[i]a[i]a[i] 大的都退掉,剩下位置就相當(dāng)于是 l[i]l[i]l[i] 了。

  • 同樣的,我們也求出 r[i]r[i]r[i] 表示最右到哪兒,注意由于 a[i]a[i]a[i] 可能相等,為了不算重,我們可以在算 r[i]r[i]r[i] 退棧時(shí)把大于改為大于等于,算 l[i]l[i]l[i] 仍是大于,這樣就解決這個(gè)問(wèn)題了。

  • 那么最后答案就是:∑i=1n?1dep[a[i]]?(i?l[i])?(r[i]?i)+∑i=1ndep[p[i]]\sum_{i=1}^{n-1}dep[a[i]]*(i-l[i])*(r[i]-i)+\sum_{i=1}^{n}dep[p[i]]i=1n?1?dep[a[i]]?(i?l[i])?(r[i]?i)+i=1n?dep[p[i]]

  • 時(shí)間復(fù)雜度 O(nlogn)O(n\ log\ n)O(n?log?n) ,這個(gè) log 是算 lca 時(shí)帶的,如果用 tarjan 求 lca 可以做到線性(但聽(tīng)說(shuō)跑得沒(méi)有樹(shù)鏈剖分快)。

Code

#include<cstdio> #include<cctype> using namespace std; typedef long long LL; const int N=6e5+5; int n,tot; LL ans; int first[N],nex[N<<1],en[N<<1]; int dep[N],size[N],son[N],top[N],fa[N]; int p[N],a[N],st[N],l[N],r[N]; inline int read() {int X=0,w=0; char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X; } inline void insert(int x,int y) {nex[++tot]=first[x];first[x]=tot;en[tot]=y; } void dfs(int x) {dep[x]=dep[fa[x]]+1;size[x]=1;for(int i=first[x];i;i=nex[i])if(en[i]^fa[x]){fa[en[i]]=x;dfs(en[i]);size[x]+=size[en[i]];if(size[son[x]]<size[en[i]]) son[x]=en[i];} } void dfs1(int x,int y) {top[x]=y;if(!son[x]) return;dfs1(son[x],y);for(int i=first[x];i;i=nex[i])if(en[i]^fa[x] && en[i]^son[x]) dfs1(en[i],en[i]); } inline int lca(int x,int y) {while(top[x]^top[y])if(dep[top[x]]>dep[top[y]]) x=fa[top[x]]; else y=fa[top[y]];return dep[x]<dep[y]?x:y; } int main() {freopen("easy.in","r",stdin);freopen("easy.out","w",stdout);n=read();for(int i=1;i<n;i++){int x=read(),y=read();insert(x,y);insert(y,x);}dfs(1);dfs1(1,1);for(int i=1;i<=n;i++){p[i]=read();ans+=dep[p[i]];}for(int i=1;i<n;i++) a[i]=dep[lca(p[i],p[i+1])];tot=0;for(int i=1;i<n;i++){while(tot && a[st[tot]]>=a[i]) tot--;l[i]=st[tot];st[++tot]=i;}st[tot=0]=n;for(int i=n-1;i;i--){while(tot && a[st[tot]]>a[i]) tot--;r[i]=st[tot];st[++tot]=i;}for(int i=1;i<n;i++) ans+=(LL)a[i]*(i-l[i])*(r[i]-i);printf("%lld",ans);return 0; }

總結(jié)

以上是生活随笔為你收集整理的JZOJ 5956. 【NOIP2018模拟11.7A组】easy LCA的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久艹影院 | 国产亚洲综合av | 成人免费淫片aa视频免费 | 久久在线看 | 91aaaa| 欧美极品在线 | www.xxx.日本| 国产成人片 | 国产第一页精品 | 欧洲做受高潮欧美裸体艺术 | 91亚洲免费| 在线免费视频一区二区 | 337p日本欧洲亚洲大胆张筱雨 | 貂蝉被到爽流白浆在线观看 | 欧美日韩国产精品一区 | 特种兵之深入敌后 | 日本亚洲综合 | 自拍偷拍激情 | xxxx18国产| 牛夜精品久久久久久久99黑人 | 污片免费在线观看 | 假日游船| 丰满人妻一区二区三区大胸 | 国产一区二区三区在线观看免费 | 欧美日韩三级视频 | 亚洲成人mv | 另类亚洲色图 | 精品国产三级片在线观看 | 国产在线久久久 | 色综合中文综合网 | 天天视频黄色 | 国产精品国产三级国产专播品爱网 | 日韩网站在线播放 | 黄色片播放器 | 天天摸天天干天天操 | 亚洲欧美影院 | www.夜夜| 999视频在线观看 | 国产婷婷色综合av蜜臀av | 日韩免费高清一区二区 | 亚洲一区欧洲二区 | 亚洲熟女乱色综合亚洲小说 | 强行侵犯视频在线观看 | 日批在线观看 | www色网| 999这里只有精品 | 色婷婷久久综合中文久久蜜桃av | 娇妻玩4p被三个男人伺候电影 | 妞干网这里只有精品 | 亚洲精品高潮 | 欧美性xxxxxxxxx | 熟妇五十路六十路息与子 | 性色欲网站人妻丰满中文久久不卡 | 日韩人妻一区二区三区蜜桃 | 亚洲福利专区 | 性生活毛片 | 91精品国产麻豆国产自产在线 | 欧美一区二区三区视频在线观看 | www.成人免费视频 | 黄色裸体片 | 97人妻精品一区二区三区动漫 | 中文字幕精品一区久久久久 | 国产美女一级片 | 亚洲欧美在线一区 | 国产精品一区久久久 | 99精品在线视频观看 | 韩国美女一区 | 人妻熟女一区 | 亚洲美女视频在线 | 极度诱惑香港电影完整 | 国产原创麻豆 | 日韩电影中文字幕在线观看 | 欧美在线一二 | 一区二区视频在线 | 在线看国产| 欧美综合激情网 | 一区二区三区在线免费观看 | 激情五月激情综合网 | 一品道av | 一区二区不卡视频在线观看 | 日本人妻不卡一区二区三区中文字幕 | 久久99久久久久 | 欧美特级黄色大片 | 影音先锋在线观看视频 | 中文精品久久 | 精品国产123| 国产精品中文字幕在线观看 | www.日韩高清 | 婷婷国产成人精品视频 | 在线免费观看视频黄 | 91爱爱网| 91久久精品日日躁夜夜躁欧美 | 免费黄色片子 | 韩日一区二区三区 | 中文亚洲av片不卡在线观看 | 欧美黑人一区 | 性生交大片免费看视频 | 亚洲永久无码精品 | 亚洲视频 欧美视频 |