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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BZOJ-3289-Mato的文件管理-莫队+树状数组

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ-3289-Mato的文件管理-莫队+树状数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述

給定一段 n(n≤50000) 個數的序列, m(m≤50000) 次詢問 [L, R] 區間內相鄰元素兩兩交換使得序列不降的最少次數.


分析

  • 首先轉化為一個逆序對的問題, 最少交換的次數就是逆序對的個數. 后面的證明說的不嚴謹甚至可能是錯的, 不過可以作為啟發和參考吧 : 對于序列中的一個元素x, 其后面比它小的元素有c個, 討論它后面第一個元素y的值, 如果y比x小, 那么需要交換x和y使得序列不降, 這樣操作個數增加的實際上就是一對逆序對, 然后x到了y的位置繼續 ; 如果y大于或等于x, 那么需要先把y移動到它應該去的位置, 再移動x, 這樣增加的就是以x和y開頭的逆序對數之和.
  • 然后用莫隊算法離線統計. 需要解決的問題就是如何統計在一段已經統計出逆序對個數的序列的開頭或者結尾添加或刪除一個元素后對原逆序對個數的影響. 可以用樹狀數組記錄離散后的權值在當前序列[A[L], A[R]]中的出現次數的前綴和.
  • ①在一列數的后面添加一個數,逆序對數會增加 數列中比它大的數的個數。

    ②在一列數的后面刪除一個數,逆序對數會減少 數列中比它大的數的個數。

    ③在一列數的前面添加一個數,逆序對數會增加 數列中比它小的數的個數。

    ④在一列數的前面刪除一個數,逆序對數會減少 數列中比它小的數的個數。

  • from :?AutSky_JadeK

  • 用樹狀數組記錄后用莫隊算法統計.

#include #include #include using namespace std;const int maxn = 50000 + 10;int tot, block; int A[maxn], T[maxn]; int c[maxn]; int ans[maxn];struct Question {int L, R, id;bool operator < (const Question& rhs) const {if(L/block != rhs.L/block) return L < rhs.L;return R < rhs.R;} } questions[maxn];#define q questions[i]void modify(int x, int d) {for(; x <= tot; x += x&-x) c[x] += d; }int query(int x) {int ret = 0;for(; x > 0; x -= x&-x) ret += c[x];return ret; }int main() {int n, m;scanf("%d", &n);block = (int)(sqrt(n) + 0.5);for(int i = 1; i <= n; i++)scanf("%d", &A[i]), T[i] = A[i];sort(T+1, T+n+1);tot = unique(T+1, T+n+1)-T - 1;for(int i = 1; i <= n; i++)A[i] = lower_bound(T+1, T+tot+1, A[i])-T;scanf("%d", &m);for(int i = 1; i <= m; i++)scanf("%d %d", &q.L, &q.R), q.id = i;sort(questions+1, questions+m+1);int L = 1, R = 0, cur = 0;for(int i = 1; i <= m; i++) {while(L > q.L) cur += query(A[--L]-1), modify(A[L], 1);while(R < q.R) cur += query(tot)-query(A[++R]), modify(A[R], 1);while(L < q.L) modify(A[L], -1), cur -= query(A[L++]-1);while(R > q.R) modify(A[R], -1), cur -= query(tot)-query(A[R--]);ans[q.id] = cur;}for(int i = 1; i <= m; i++) printf("%d\n", ans[i]);return 0; }


總結

以上是生活随笔為你收集整理的BZOJ-3289-Mato的文件管理-莫队+树状数组的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲免费福利 | 免费看污片网站 | 色多多在线看 | 久久伊人热 | 精品一区二区三区无码按摩 | 久久青 | 色在线视频观看 | 成人免费视频网站在线观看 | 啪啪视屏| 国产伦精品一区二区三区视频免费 | 国产91在线观看 | 青娱乐欧美 | 精品国产欧美一区二区 | 日韩在线视频免费看 | 中文字幕11页中文字幕11页 | 国产做爰高潮呻吟视频 | 91老师国产黑色丝袜在线 | 亚洲视频在线观看网站 | 久久久久网站 | 片多多在线观看 | 岛国在线视频 | 六月久久 | 亚洲精品小说 | 日韩成人一区二区三区 | 日本真人做爰免费视频120秒 | 精品欧美一区二区精品少妇 | 四虎成人精品在永久免费 | 丝袜天堂| 亚洲毛片a| 日韩久久精品 | 99极品视频 | 福利电影一区二区三区 | 黄片毛片一级 | 成人在线视频免费看 | 亚洲春色www | 日韩一区精品 | 日韩免费一二三区 | 青青草原在线免费 | 日韩一区不卡 | 色哟哟av| 国产精品xxx在线观看www | 亚洲视频在线观看网址 | 国产精品人八做人人女人a级刘 | 国产看真人毛片爱做a片 | 日韩欧美大片在线观看 | 欧美日韩视频一区二区三区 | 一边摸内裤一边吻胸 | 久久久久女人精品毛片九一 | 国产美女视频一区二区 | xxxxxx国产 | 四虎影裤 | 成人激情小视频 | 国产欧美精品一区二区三区 | 色噜噜影院 | 日韩精品人妻中文字幕 | 久久精品在线播放 | 国产精品久久精品三级 | 国产精品视频在线观看免费 | 日韩欧美国产成人精品免费 | 美女隐私直播 | 天天激情站 | 操屁股视频 | 视频在线 | 日韩天堂在线 | 午夜精品99 | 丰满岳乱妇在线观看中字无码 | 黑人极品ⅴideos精品欧美棵 | 开心激情综合网 | 国产一级二级三级在线 | 国产精品久久久久毛片软件 | 色婷婷精品视频 | 国产精品久久久久久久天堂 | 国产精品色在线 | 国产精品27p | 国产综合内射日韩久 | a级片久久 | 老司机一区二区三区 | 91视频分类| 五月天三级 | 国产一卡二卡 | 在线视频你懂得 | 男女污网站 | 免费处女在线破视频 | 婷婷人体 | 天堂婷婷| 免费男女视频 | 欧美双性人妖o0 | 国产夫妻一区 | 久操国产 | 邵氏电影《金莲外传2》免费观看 | 国产伊人网 | 亚洲xxxxx| 国产视频一区二区三区在线 | 日韩wwww | 日韩在线视频观看免费 | 日韩美女久久 | 亚洲88av| 国产精品情侣呻吟对白视频 | 天天曰天天干 |