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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C. Goodbye Souvenir(CDQ 或 树套树)

發布時間:2023/12/4 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C. Goodbye Souvenir(CDQ 或 树套树) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C. Goodbye Souvenir

∑i=LRi?preAi[preAi≥L]\sum\limits_{i = L} ^{R} i - pre_{A_i} [pre_{A_i} \geq L]i=LR?i?preAi??[preAi??L],進一步考慮即∑i?preAi[i≤R,preAi≥L]\sum i - pre_{A_i}[i \leq R, pre_{A_i} \geq L]i?preAi??[iR,preAi??L],

i≤Ri \leq RiR

preAi≥Lpre_{A_i} \geq LpreAi??L

③ 時間ttt維度

由此這個問題被轉化為了一個標準的三維偏序問題,第一維為時間ttt,第二維為iii,第三維為preAipre_{A_i}preAi??,在第三維中動態插入i?preAii - pre_{A_i}i?preAi??的值。

因此考慮如下一個結構體:

struct {int op, x, y, f, id; };

依次為:存放操作種類,存放iii,存放preAipre_{A_i}preAi??,存放i?preAii - pre_{A_i}i?preAi??,存放對第幾個詢問貢獻答案。

考慮修改操作,對應pre[p],p,next[p]pre[p], p, next[p]pre[p],p,next[p],我們修改的是ppp節點的信息,也就是這個節點不復存在了,

所以顯然加入操作{1,p,pre[p],pre[p]?p,0}\{1, p, pre[p], pre[p] - p, 0\}{1,p,pre[p],pre[p]?p,0},也就是減去之前存在的{1,p,pre[p],p?pre[p],0}\{1, p, pre[p], p - pre[p], 0\}{1,p,pre[p],p?pre[p],0}

考慮其對后繼的影響,顯然也要減去之前存在的后繼信息,也就是加入{1,next[p],p,p?next[p],0}\{1, next[p], p, p - next[p], 0\}{1,next[p],p,p?next[p],0}

然后加上修改后其后繼的值{1,next[p],pre[p],next[p]?pre[p],0}\{1, next[p], pre[p], next[p] - pre[p], 0\}{1,next[p],pre[p],next[p]?pre[p],0}

同樣的對于修改后,也就是插入了一個新的值,我們也要先刪去當前加入的點的后繼,然后再加入當前點,以及后繼的最新信息。

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;int a[N], pre[N], n, m, top;ll ans[N], tree[N];set<int> st[N];struct Res {int op, x, y, f, id; }Q[7 * N];bool cmpx(Res a, Res b) {return a.x < b.x; }bool cmpid(Res a, Res b) {return a.id < b.id; }inline int lowbit(int x) {return x & (-x); }void clear(int x) {while (x) {tree[x] = 0;x -= lowbit(x);} }void update(int x, int v) {while (x) {tree[x] += v;x -= lowbit(x);} }ll query(int x) {ll res = 0;while (x <= n) {res += tree[x];x += lowbit(x);}return res; }void CDQ(int l, int r) {if (l == r) {return ;}int mid = l + r >> 1;CDQ(l, mid), CDQ(mid + 1, r);for (int i = l, j = mid + 1; j <= r; j++) {while (i <= mid && Q[i].x <= Q[j].x) {if (Q[i].op & 1) {update(Q[i].y, Q[i].f);}i++;}if (Q[j].op == 2) {ans[Q[j].id] += query(Q[j].y);}}for (int i = l; i <= mid; i++) {clear(Q[i].y);}sort(Q + l, Q + r + 1, cmpx); }int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);scanf("%d %d", &n, &m);for (int i = 1; i <= n; i++) {st[i].insert(0);}for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);pre[i] = *--st[a[i]].end();st[a[i]].insert(i);Q[++top] = {1, i, pre[i], i - pre[i], 0};}for (int i = 1, op, x, y; i <= m; i++) {scanf("%d %d %d", &op, &x, &y);if (op & 1) {auto it = st[a[x]].lower_bound(x);Q[++top] = {1, x, pre[x], pre[x] - x, 0};it++;if (it != st[a[x]].end()) {Q[++top] = {1, *it, pre[*it], pre[*it] - *it, 0};pre[*it] = pre[x];Q[++top] = {1, *it, pre[*it], *it - pre[*it], 0};}st[a[x]].erase(x);a[x] = y;st[a[x]].insert(x);it = st[a[x]].lower_bound(x);it--;pre[x] = *it;Q[++top] = {1, x, pre[x], x - pre[x], 0};++it, ++it;if (it != st[a[x]].end()) {Q[++top] = {1, *it, pre[*it], pre[*it] - *it, 0};pre[*it] = x;Q[++top] = {1, *it, pre[*it], *it - pre[*it], 0};}}else {Q[++top] = {op, y, x, 0, i};}}CDQ(1, top);sort(Q + 1, Q + 1 + top, cmpid);for (int i = 1; i <= top; i++) {if (Q[i].op == 2) {printf("%lld\n", ans[Q[i].id]);}}return 0; }

總結

以上是生活随笔為你收集整理的C. Goodbye Souvenir(CDQ 或 树套树)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本在线观看a | 精品麻豆视频 | 91视频论坛 | 久久久久色 | 欧美在线三区 | 三级黄色片网站 | av成人免费在线观看 | 成人网av | 欧洲亚洲视频 | 黄色一级片a | proumb性欧美在线观看 | 午夜少妇 | 亚洲欧美精品在线观看 | 国产国语性生话播放 | 91传媒理伦片在线观看 | 老司机深夜视频 | www.国产视频| 日韩色吧| jizz中文字幕| 精品一区二区免费看 | 日韩一区二| av手机免费在线观看 | 日本黄网站在线观看 | 欧美一级一级 | 老妇裸体性激交老太视频 | 动漫涩涩免费网站在线看 | 99在线免费视频 | 亚洲欧美乱综合图片区小说区 | 免费的av网站 | 成人羞羞国产免费 | 极品人妻一区二区三区 | 国产特级av | 成人一区二区在线观看 | 激情的网站 | 亚洲成人精品一区二区三区 | 久久精品在线观看 | 美女爆乳18禁www久久久久久 | 殴美黄色大片 | 丝袜诱惑一区二区 | 久久久久久伊人 | 日本美女视频一区 | 少妇色欲网 | 欧美激情视频一区二区三区 | 成人精品久久久午夜福利 | 日本一区二区三区久久 | 99热这里只有精品在线观看 | 欧洲亚洲视频 | 欧美一级二级在线观看 | 99热这里只有精品1 亚洲人交配视频 | 最新在线中文字幕 | 涩涩视频网站 | 国产精品久久精品三级 | 人妻丰满熟妇岳av无码区hd | 精品在线91 | 免费久久网站 | 樱桃视频一区二区三区 | 97超碰人人澡人人爱学生 | 精久久久久久 | 久久激情小说 | 午夜99| 玩偶游戏在线观看免费 | 人人看超碰 | xxxx在线播放 | 求av网站 | 91丨国产丨捆绑调教 | 少妇视频一区二区三区 | 香蕉视频在线看 | 成人精品电影 | 免费看黄在线观看 | 一级成人免费 | 色天天 | 看全色黄大色黄大片大学生 | 国产一卡二卡 | 成人网免费 | 无遮挡av | 女人高潮被爽到呻吟在线观看 | 91天堂在线视频 | 中年夫妇啪啪高潮 | 日韩三级免费 | 欧美黄页网站 | 真性中出 | 男人日女人b视频 | 欧美污污视频 | 欧美影视一区二区 | 蜜桃精品久久久久久久免费影院 | 国产精品第三页 | 四虎国产精品永久在线国在线 | 亚洲免费av一区 | 经典三级久久 | 丝袜一区二区三区四区 | 精品欧美久久 | 欧美不卡一二三 | 一区二区三区免费在线视频 | 仙踪林久久久久久久999 | 六月婷婷综合 | 欧美精品久久久久性色 | 日本动漫艳母 | 免费看又黄又无码的网站 | 久久99国产精品久久99果冻传媒 |