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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷P3919可持久化线段树

發布時間:2024/10/6 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P3919可持久化线段树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P3919 【模板】可持久化數組(可持久化線段樹/平衡樹)

  • 題目提供者HansBug?站長團
  • 評測方式云端評測
  • 標簽O2優化高性能
  • 難度提高+/省選-
  • 時空限制3000ms / 512MB

有了可持久化數組,便可以實現很多衍生的可持久化功能(例如:可持久化并查集)

題目描述

如題,你需要維護這樣的一個長度為?N 的數組,支持如下幾種操作

  • 在某個歷史版本上修改某一個位置上的值

  • 訪問某個歷史版本上的某一位置的值

  • 此外,每進行一次操作(對于操作2,即為生成一個完全一樣的版本,不作任何改動),就會生成一個新的版本。版本編號即為當前操作的編號(從1開始編號,版本0表示初始狀態數組)

    輸入格式:

    輸入的第一行包含兩個正整數 N M, 分別表示數組的長度和操作的個數。

    第二行包含 N 個整數,依次為初始狀態下數組各位的值(依次為 ai?,1 ≤ i ≤ N)。

    接下來 M行每行包含 3 或 4 個整數,代表兩種操作之一( i 為基于的歷史版本號):

    ????? ? 1.對于操作1,格式為 vi?1 loci?valuei,即為在版本 vi?的基礎上,將 aloci?修改為 valuei。

    ????? ? 2.對于操作2,格式為 vi?2 loci,即訪問版本 vi?中的 aloci?的值。

    (1 <= N,M <= 105,1 <= loci?<= N,1 <= vi?<= i,- 109?<= ai,valuei?<= 109)

    輸出格式:

    輸出包含若干行,依次為每個操作2的結果。

    輸入

    5 10 59 46 14 87 41 0 2 1 0 1 1 14 0 1 1 57 0 1 1 88 4 2 4 0 2 5 0 2 4 4 2 1 2 2 2 1 1 5 91

    輸出

    59 87 41 87 88 46

    說明

    樣例說明:

    一共11個版本,編號從0-10,依次為:

    *?0?: 59 46 14 87 41

    *?1?: 59 46 14 87 41

    *?2?: 14 46 14 87 41

    *?3?: 57 46 14 87 41

    *?4?: 88 46 14 87 41

    *?5?: 88 46 14 87 41

    *?6?: 59 46 14 87 41

    *?7?: 59 46 14 87 41

    *?8?: 88 46 14 87 41

    *?9?: 14 46 14 87 41

    *?10?: 59 46 14 87 91

    可持久化線段樹

    給出 N 個數字的序列,M 次操作。

    有兩個操作: 1. 更新 i 點元素為 k,并保存版本 +1。

    ? ? ? ? ? ? ? ? ? ? ? ?2. 查詢 x 版本下點 i 的值。 起初為版本號為 0。

    可持久化線段樹最大的特點是:

    可以訪問歷史版本。 簡而言之,可持久化線段樹,是在線段樹上不斷更新,但卻 不刪除原有信息的線段樹。 每次更新都賦予一個新的根節點編號,用以區分不同的版本。

    由于可持續化線段樹的結點的序號不確定。 因此需要采取動態開點的方法構建線段樹

    #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; struct node{int lc,rc;long long int v; }segtree[maxn << 8];//可持久化線段樹 int root[maxn << 5];//root[i]表示版本號為i的線段樹的根節點編號 long long int a[maxn];//長度為 N 的數組 int n,m;//n個點,m種操作 int tot;int build_tree(int l, int r) {int pos = ++tot;if (l == r) {segtree[pos].v = a[l];return pos;}int mid = l + (r - l)/2;segtree[pos].lc = build_tree(l, mid);segtree[pos].rc = build_tree(mid + 1, r);return pos; } //即訪問版本 pos 中的 a[p] 的值 long long int query(int pos, int p, int l, int r) {if (l == r) {return segtree[pos].v;}int mid = l + (r - l)/2;if(p <= mid) return query(segtree[pos].lc, p, l, mid);else return query(segtree[pos].rc, p, mid + 1, r); } //在版本 old 的基礎上,將 a[tar] 修改為 c int update(int old, int tar, int c, int l, int r) {int pos = ++tot;//新開節點時,需要依靠前面構建的節點編號+1if (l == r) {segtree[pos].v = c;return pos;}segtree[pos].lc = segtree[old].lc;segtree[pos].rc = segtree[old].rc;int mid = l + (r - l)/2;if(tar <= mid) segtree[pos].lc = update(segtree[old].lc, tar, c, l, mid);else segtree[pos].rc = update(segtree[old].rc, tar, c, mid + 1, r);return pos; }int main() {//freopen("test.in", "r", stdin);//freopen("test.out", "w", stdout);while (scanf("%d %d", &n, &m) != EOF) {tot = 0;for (int i = 1;i <= n; i++){scanf("%lld", &a[i]);}root[0] = build_tree(1,n);int v,x,l,w;for (int i = 1;i <= m; i++){scanf("%d %d %d", &v, &x, &l);if (x == 1) {scanf("%d", &w);root[i] = update(root[v], l, w, 1, n);} else {root[i] = root[v];printf("%lld\n",query(root[v], l, 1, n));}}}return 0; }

    ?

    總結

    以上是生活随笔為你收集整理的洛谷P3919可持久化线段树的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 成人看片网 | 婷婷资源网| 日本一本高清 | 91精品国产色综合久久不卡蜜臀 | 免费av在线网址 | 中文字幕精品国产 | 91天天操| 丰满大爆乳波霸奶 | 九九色九九 | 操丝袜少妇 | 狼人av在线 | 久久精品视频3 | 视频一区二区三区在线 | 色老头一区二区三区 | 美女久久久久久久久 | 中国人与拘一级毛片 | 亚洲国产日韩在线一区 | 性色av网址 | 亚洲综合视频在线 | 夜夜爽夜夜叫夜夜高潮漏水 | www.浪潮av.com | 在线观看日本 | 精久久久久久久 | 国产成人无码a区在线观看视频 | 99re国产 | 91在线无精精品入口 | a级国产毛片 | 日韩成人免费 | 网站av在线 | 天天综合91 | 久久视频国产 | 色av一区二区三区 | 国产精品乱码一区二区三区 | 国产欧美一区二区精品忘忧草 | 中文字幕视频观看 | 日本午夜视频在线观看 | 无码精品人妻一二三区红粉影视 | 欧美日韩一区二区在线观看 | 四虎影城库 | 午夜视频在线免费看 | 国产成人综合网 | 观看毛片 | 亚洲成熟毛多妇女av毛片 | 成人小视频在线免费观看 | 美国一级片网站 | 天堂网色 | 日本一区二区视频免费 | 芭乐视频色 | 亚洲精品日韩欧美 | 久久久久久久久91 | 女人扒开腿让男人捅爽 | 亚洲欧美日韩高清 | xx色综合| 疯狂做爰高潮videossex | 99热网址| 精品一区亚洲 | 97久久综合 | 亚洲欧美视频在线播放 | 欧美老女人性生活 | youjizz日本人 | 午夜网站在线观看 | 户外露出一区二区三区 | 国产一级片自拍 | 日韩在线一区二区 | 手机av在线免费观看 | 欧美久久久久久久久中文字幕 | 国产男女猛烈无遮挡免费观看网站 | 咪咪成人网 | 狠狠爱夜夜爱 | 国产美女精品视频 | 日韩av一区在线播放 | 优优色综合 | 免费在线观看你懂的 | av久久久久久 | 婷婷色中文字幕 | 欧美日韩综合网 | 成人三级黄色 | 精品无码人妻一区二区三区品 | 日韩欧美在线观看一区二区三区 | 超碰在线成人 | 麻豆av免费| 日韩色中色 | 欧美一区二区人人喊爽 | 成人免费aaa | 伊人福利 | 久久人人澡 | 草逼视频网站 | 国产精品一级片在线观看 | 黄色香蕉软件 | 可以直接看的无码av | 日本一本二本三区免费 | 精品国产一区二区三区四区 | 国产在线播放91 | jizz精品 | 黄色日韩 | 国产一级片一区 | 春意影院福利社 | 精品欧美一区二区久久久 | 91黄色影视|