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

        歡迎訪問 生活随笔!

        生活随笔

        當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

        编程问答

        jzoj3338-[NOI2013模拟]法法塔的奖励【权值线段树,线段树合并】

        發布時間:2023/12/3 编程问答 44 豆豆
        生活随笔 收集整理的這篇文章主要介紹了 jzoj3338-[NOI2013模拟]法法塔的奖励【权值线段树,线段树合并】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

        正題


        題目大意

        一棵樹,對于每個點,求從任何一個在該點的子樹為頭,以該點為結尾的序列必須選擇這個點的最長不降子序列。


        解題思路

        首先我們使用權值線段樹計算答案每個點(l,r,w)(l,r,w)(l,r,w)表示以l~rl\sim rlr為結尾最長的不降升子序列長度。

        然后利用線段樹維護,每次跑完子節點之后將線段樹合并到父節點上來計算答案。

        時間復雜度O(nlogn)O(n\ log\ n)O(n?log?n)


        codecodecode

        #pragma GCC optimize(2) %:pragma GCC optimize(3) %:pragma GCC optimize("Ofast") %:pragma GCC optimize("inline") #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; const int N=101000; int n,rt[N],tot,ls[N],ans[N],w[N]; struct Edge_node{int to,next; }a[N]; struct Tree_node{int w,l,r,lson,rson; }; vector<int> q[N],c[N]; struct Line_cut_tree{Tree_node t[N*20];int tot;#define ls t[x].lson#define rs t[x].rsonint Ask(int x,int l,int r,int L,int R){if(!x) return 0; if(L==l&&R==r)return t[x].w;int mid=(L+R)/2;if(r<=mid) return Ask(ls,l,r,L,mid);else if(l>mid) return Ask(rs,l,r,mid+1,R);else return max(Ask(ls,l,mid,L,mid),Ask(rs,mid+1,r,mid+1,R));}void Change(int &x,int pos,int z,int L,int R){if(!x) x=++tot;if(L==R){t[x].w=max(z,t[x].w);return;}int mid=(L+R)/2;if(pos<=mid) Change(ls,pos,z,L,mid);else if(pos>mid) Change(rs,pos,z,mid+1,R);t[x].w=max(t[ls].w,t[rs].w);}int merge(int x,int y,int L,int R){if(!x||!y)return x+y;t[x].w=max(t[x].w,t[y].w);if(L==R)return x;int mid=(L+R)/2;t[x].lson=merge(t[x].lson,t[y].lson,L,mid);t[x].rson=merge(t[x].rson,t[y].rson,mid+1,R);return x;}#undef ls#undef rs }Tree; void addl(int x,int y) {a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot; } void dfs(int x) {int root=0;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;dfs(y);root=Tree.merge(root,rt[y],1,n);}ans[x]=Tree.Ask(root,1,w[x],1,n)+1;Tree.Change(root,w[x],ans[x],1,n);rt[x]=root; } int main() {scanf("%d",&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x);if(i==1) continue;addl(x,i);}for(int i=1;i<=n;i++)scanf("%d",&w[i]);dfs(1);for(int i=1;i<=n;i++)printf("%d ",ans[i]); }

        總結

        以上是生活随笔為你收集整理的jzoj3338-[NOI2013模拟]法法塔的奖励【权值线段树,线段树合并】的全部內容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

        主站蜘蛛池模板: 九九热国产精品视频 | 国产九区 | 加勒比综合在线 | 日韩av在线一区二区三区 | 精品97人妻无码中文永久在线 | 国产精品国产三级国产专区53 | 成人区人妻精品一区二区网站 | 中文国产在线观看 | 免费久久久久久 | 91精品视频网站 | 粉嫩av一区二区夜夜嗨 | 日韩婷婷 | 老熟女毛茸茸浓毛 | 美腿丝袜亚洲综合 | av第一福利大全导航 | 超碰99在线 | 青青草原在线免费观看视频 | 午夜av导航| 日韩免费精品 | 日本亲子乱子伦xxxx | 强乱中文字幕av一区乱码 | 国产精品视频一区二区在线观看 | 欧美精品一区二区三区久久 | 校园春色 亚洲色图 | 日韩成人黄色片 | 精品无码一区二区三区 | 国产精品亚洲专区无码牛牛 | 美国色综合 | 嫩草影院在线视频 | 999精品国产 | 91高清在线免费观看 | 91视频毛片| 色欧美88888久久久久久影院 | 国产一卡在线 | 久久久久久久艹 | youjizz在线视频 | 干爹你真棒插曲免费 | 日本天堂网 | 波多野av在线 | 男人爽女人下面动态图 | 久久看av | 91欧美一区| 国产精品久久在线 | 无遮挡裸光屁屁打屁股男男 | 自拍偷拍欧美视频 | 天堂色综合 | ass日本粉嫩pics珍品 | 欧美日韩一 | 日av一区| 亚洲乱熟女一区二区三区小说 | 超碰人人超| 中国一级特黄毛片 | 国产精品自偷自拍 | 日韩av在线免费 | av天堂一区二区 | 波多野结衣家庭主妇 | 男生舔女生的屁股 | 久久久无码精品亚洲无少妇 | 福利在线观看 | 青娱乐国产视频 | 日韩电影一区二区在线观看 | 久久av红桃一区二区小说 | 老汉色老汉首页av亚洲 | 日韩欧美国产高清 | 看一级大片| 网址在线观看你懂的 | 国产亚洲在线观看 | 乱子伦一区二区 | 精品一区二区三区在线免费观看 | 欧美亚洲综合网 | 国产激情成人 | 色视频在线观看 | 亚洲一区二区三区三州 | zjzjzjzjzj亚洲女人 | www.超碰在线观看 | 99精品视频一区二区 | 欧美国产日韩一区二区三区 | 超碰资源总站 | 亚洲青涩 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 日韩成人影视 | 国产一国产精品一级毛片 | 国产艳情片 | 国产在线观看你懂的 | 国产精品av一区 | 亚洲一区亚洲二区 | 偷拍亚洲| 亚洲精品视频导航 | www.欧美亚洲 | 久久免费视频一区二区 | 国产又粗又猛又爽又黄91精品 | 天天插夜夜操 | 欧美一区二区国产 | 另类第一页 | 亚洲一久久 | 国产v片在线观看 | 蜜桃视频在线播放 | 污免费视频 | 日本一区二区三区免费在线观看 |