日韩性视频-久久久蜜桃-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可持久化线段树的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 精品国产视频在线 | 性高跟鞋xxxxhd人妖 | 日产亚洲一区二区三区 | 亚洲色图28p | 视频在线看 | 欧美日韩在线观看一区 | 村上凉子av | 国产私拍视频 | 久久精品在这里 | 亚洲国产综合视频 | 337p色噜噜 | 大奶子网站 | 国产一国产精品一级毛片 | 歪歪视频在线观看 | 色av色 | 五月激情综合网 | 四虎成人永久免费视频 | 精品久久BBBBB精品人妻 | 色视频免费观看 | 欧美一级免费看 | 精品午夜一区二区 | 麻豆短视频在线观看 | 少妇全黄性生交片 | 国产三级视频在线播放 | 国产主播99 | 爱爱免费视频网站 | 91成人短视频在线观看 | 亚洲丁香色 | 岛国片免费在线观看 | 色老头在线视频 | 国产爆操视频 | 国产又色又爽无遮挡免费 | 狠色综合| 国产调教视频 | 91av爱爱| 日韩欧美大陆 | 秋霞午夜鲁丝一区二区老狼 | 日本午夜一级 | 小蝌蚪视频色 | 色漫在线观看 | 亚洲av成人精品一区二区三区在线播放 | 91尤物国产福利在线观看 | 日本一区二区三区中文字幕 | 亚洲乱码国产乱码精品精98午夜 | 性色欲网站人妻丰满中文久久不卡 | 日韩不卡高清视频 | 高清二区 | 亚洲精品成人在线视频 | 精品国产乱码一区二区 | 性xxxxx大片免费视频 | 色性网站 | 久久精品国产露脸对白 | 国产激情综合五月久久 | 欧美一区二区三区免费在线观看 | 成人精品 | 深夜精品视频 | 顶级黑人搡bbw搡bbbb搡 | 国产91丝袜在线播放九色 | 手机av观看 | 在线看片一区二区 | 欧美videos另类极品 | 久久亚洲成人 | 少妇天天干 | 中文文字幕一区二区三三 | 五月天激情国产综合婷婷婷 | 国产麻豆电影在线观看 | 欧美在线国产 | 久久久久亚洲 | caoprom97| 一级黄色大片视频 | 成人久久久精品国产乱码一区二区 | 欧美日韩国产免费一区二区三区 | 久久一区二区精品 | 极品在线播放 | 欧美日韩国产综合网 | 欧美一区二区三 | 青青草香蕉 | 神马午夜嘿嘿 | 久久精品视频偷拍 | 久久av高潮av无码av喷吹 | 日本爽爽爽爽爽爽在线观看免 | 国产精品久久久久久久成人午夜 | av美国| 欧美成人精品欧美一级乱 | 欧美不卡视频 | 亚洲精品乱码久久久久久麻豆不卡 | av成人在线看 | 日韩精品人妻一区 | 色老头在线观看 | 肉色丝袜脚交一区二区 | 一区二区三区小说 | 91精品国产综合久久精品图片 | 北条麻妃99精品青青久久 | 国产精品日韩精品 | 男人深夜影院 | 免费毛片一区二区三区久久久 | 成人网址在线观看 | 欧美视频在线观看免费 | 永久免费精品影视网站 |