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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

F. Strange Array(Codeforces Round #727 (Div. 2))(主席树)

發(fā)布時間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 F. Strange Array(Codeforces Round #727 (Div. 2))(主席树) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

F. Strange Array

給定一個長度為nnn的數(shù)組aaa1≤ai≤n1 \leq a_i \leq n1ai?n,對于每個aia_iai?,我們要找到一個l≤i,r≥il \leq i, r \geq ili,ri

使得,我們對區(qū)間[l,r][l, r][l,r]升序后,值為aia_iai?的數(shù)與中位數(shù)相隔最遠(yuǎn),輸出這個最遠(yuǎn)距離。

我們分兩種情況討論:

  • aia_iai?在中位數(shù)的左邊,也就是ai≤a_i \leqai?中位數(shù),我們考慮把aj≥aia_j \geq a_iaj?ai?的設(shè)置為111,其他都設(shè)置為?1-1?1

    則我們就是要對每個iii找到一個區(qū)間[l,r][l, r][l,r],使得區(qū)間和最大,假設(shè)這個區(qū)間和為xxx,則答案即為x2\frac{x}{2}2x?

  • aia_iai?在中位數(shù)的右邊,也就是ai≥a_i \geqai?中位數(shù),我們考慮把aj≤aia_j \leq a_iaj?ai?的設(shè)置為111,其他設(shè)置為?1-1?1

    則我們就是要對每個iii找到一個區(qū)間[l,r][l, r][l,r],使得區(qū)間和最大,假設(shè)這個區(qū)間和為xxx,則答案即為x+12?1\frac{x + 1}{2} - 12x+1??1

綜上我們對這兩個答案取maxmaxmax即可,至于對值的維護(hù),我們可以考慮用主席樹維護(hù)區(qū)間左、右最大和即可。

#include <bits/stdc++.h>using namespace std;const int N =2e5 + 10;int root[N], ls[N << 5], rs[N << 5], num;int a[N], ans[N], n;vector<int> P[N];struct Res {int lsum, sum, rsum; }T[N << 5];Res operator + (Res a, Res b) {return {max(a.lsum, a.sum + b.lsum), a.sum + b.sum, max(a.rsum + b.sum, b.rsum)}; }void push_up(int rt) {T[rt] = T[ls[rt]] + T[rs[rt]]; }void build(int &rt, int l, int r) {rt = ++num;if (l == r) {T[rt] = {1, 1, 1};return ;}int mid = l + r >> 1;build(ls[rt], l, mid);build(rs[rt], mid + 1, r);push_up(rt); }void update(int &rt, int pre, int l, int r, int x, int v) {rt = ++num, ls[rt] = ls[pre], rs[rt] = rs[pre];if (l == r) {T[rt] = {v, v, v};return ;}int mid = l + r >> 1;if (x <= mid) {update(ls[rt], ls[pre], l, mid, x, v);}else {update(rs[rt], rs[pre], mid + 1, r, x, v);}push_up(rt); }Res query(int rt, int l, int r, int L, int R) {if (l >= L && r <= R) {return T[rt];}int mid = l + r >> 1;if (L <= mid && R > mid) {return query(ls[rt], l, mid, L, R) + query(rs[rt], mid + 1, r, L, R);}else if (L <= mid) {return query(ls[rt], l, mid, L, R);}else {return query(rs[rt], mid + 1, r, L, R);} }int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);P[a[i]].push_back(i);}build(root[1], 1, n);for (int i = 2; i <= n; i++) {root[i] = root[i - 1];for (auto it : P[i - 1]) {update(root[i], root[i], 1, n, it, -1);}}for (int i = 1; i <= n; i++) {int lsum = 0, rsum = 0, sum = 1;if (i != 1) {lsum = query(root[a[i]], 1, n, 1, i - 1).rsum;}if (i != n) {rsum = query(root[a[i]], 1, n, i + 1, n).lsum;}if (lsum > 0) {sum += lsum;}if (rsum > 0) {sum += rsum;}ans[i] = max(ans[i], sum >> 1);}for (int i = 1; i <= num; i++) {ls[i] = rs[i] = 0;}for (int i = 1; i <= n; i++) {root[i] = 0;}num = 0;build(root[n], 1, n);for (int i = n - 1; i >= 1; i--) {root[i] = root[i + 1];for (auto it : P[i + 1]) {update(root[i], root[i], 1, n, it, -1);}}for (int i = 1; i <= n; i++) {int lsum = 0, rsum = 0, sum = 1;if (i != 1) {lsum = query(root[a[i]], 1, n, 1, i - 1).rsum;}if (i != n) {rsum = query(root[a[i]], 1, n, i + 1, n).lsum;}if (lsum > 0) {sum += lsum;}if (rsum > 0) {sum += rsum;}ans[i] = max(ans[i], (sum + 1) / 2 - 1);}for (int i = 1; i <= n; i++) {printf("%d%c", ans[i], i == n ? '\n' : ' ');}return 0; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的F. Strange Array(Codeforces Round #727 (Div. 2))(主席树)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 四虎国产精品永久在线国在线 | 国产56页 | 亚洲热av | 性日韩 | 亚洲福利社区 | xxxx色| 色婷婷激情综合 | 国产精品爽爽久久 | 手机看片久久 | 天天操天天干天天 | av手机在线免费观看 | 色就是色欧美 | 黄色美女免费网站 | 亚洲欧美另类自拍 | 青娱乐福利视频 | 中文字幕在线观看你懂的 | 天天成人 | 亚洲精品国产精品乱码不99热 | 国产精品亚洲一区二区三区在线观看 | 亚洲日本免费 | 一区二区三区四区国产 | 久草新视频| av一级在线观看 | 最新激情网站 | 丁香美女社区 | 国产精品大片 | 一对一色视频聊天a | 精品一区二区在线播放 | 岛国中文字幕 | 日韩一区二区免费在线观看 | 久久东京| 亚洲天堂视频网 | 久久av免费 | 青青草www | 欧美在线一区二区三区 | 国产一区二区三区电影在线观看 | 91高清视频在线观看 | 一区不卡av | 中文字幕成人一区 | 日本三级黄色大片 | 在线免费看污视频 | 91大神网址 | 天天综合影院 | 伊人久久网站 | 国产微拍精品一区 | av女人的天堂 | 国产粉嫩在线观看 | 色翁荡息又大又硬又粗又爽 | 韩国伦理中文字幕 | 免费观看黄色的网站 | 69社| 天堂影院av | 国产一区二区成人 | 114国产精品久久免费观看 | 欧美综合国产 | 91成人动漫 | 欧美色图网址 | 91www| 无限资源日本好片 | 最好看的2019中文大全在线观看 | 国产精品传媒麻豆hd | 草莓视频在线观看入口w | 午夜污污 | 在线免费av观看 | 国产女主播在线一区二区 | 亚洲素人 | 欧美高清另类 | 国产精品正在播放 | 手机在线播放av | 五月天一区二区三区 | 日日爱666 | 激情欧美日韩 | www日本com| 在线观看不卡一区 | 91精品人妻互换一区二区 | 欧美一级一区 | 熟妇人妻精品一区二区三区视频 | 神马午夜在线 | 国产成年人视频网站 | 看毛片看毛片 | 泰剧19禁啪啪无遮挡 | 欧美日韩视频一区二区三区 | 日韩免费在线看 | 好男人网站 | 欧美性受xxxx狂喷水 | 天干夜夜爽爽日日日日 | 亚洲狠狠操 | 日本女人一区二区三区 | 中文字幕日韩精品亚洲一区小树林 | www.youjizz.com日本 | 波多野一区 | 老司机福利精品 | 欧美激情一区二区三区免费观看 | 好男人网站 | 午夜极品视频 | 亚洲精品乱码久久久久久自慰 | 短篇山村男同肉耽h | 清纯唯美第一页 | 一区二区三区日韩在线 |