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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

uva11990 动态逆序对

發布時間:2025/7/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uva11990 动态逆序对 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這題說的是給了一個數組,按照他給的順序依次刪除數,在刪除之前輸出此時的逆序對個數

我們用Fenwick樹 維護這整個數列, C[i]是一個 treap的頭, 管理了在樹狀數組中 能影響他的點,然后我們用名次樹去計算 在C[i]下小于等于要刪除的那個數的個數就ok了。

#include <iostream> #include <algorithm> #include <string.h> #include <vector> #include <cstdio> #include <stdlib.h> using namespace std; const int maxn=200005; struct Node {Node *ch[2];int r;int s;int v;int vloc;int cmp(int x)const{if(x==v)return -1;return x<v?0:1;}void maintain(){s=ch[0]->s+ch[1]->s+vloc;} }; Node *null=new Node(); void rotate(Node *&o, int d) {Node *k=o->ch[d^1];o->ch[d^1]=k->ch[d];k->ch[d]=o;o->maintain();k->maintain(); o=k; } void insert(Node *&o,int x) {if(o==null){o=new Node();o->ch[0]=o->ch[1]=null; o->v=x; o->r=rand();o->vloc=1;o->s=1;}else{int d=o->cmp(x);if(d==-1){o->vloc+=1;}else{insert(o->ch[d],x);if( o->ch[d]->r > o->r) rotate(o,d^1);}}o->maintain(); } void remove(Node *&o, int x) {int d=o->cmp(x);if(d==-1){if(o->vloc > 1){o->vloc-=1;}else if(o->ch[0]==null)o=o->ch[1];else if(o->ch[1]==null) o=o->ch[0];else{int d2 = o->ch[0]->r > o->ch[1]->r ? 1 : 0 ;rotate(o,d2); remove(o->ch[d2],x);}}else remove(o->ch[d],x);if(o!=null)o->maintain(); } int find(Node *o,int x) {int num=0;while(o!=null){int d=o->cmp(x);if(d==-1){num += o->ch[0]->s + o->vloc ;break;}else if(d==1){num+=o->ch[0]->s+o->vloc;o=o->ch[1];}else{o=o->ch[0];}}return num; } Node *C[maxn]; int cc[maxn],A[maxn]; int lowbit(int x) {return (-x)&x; } void init(int n) {for(int i=0; i<=n; i++)C[i]=null,cc[i]=0; } int N,M; void add1(int x, int v) {while(x<=N){cc[x]+=v;x+=lowbit(x);} } int sum1(int x){int ans=0;while(x>0){ans+=cc[x];x-=lowbit(x);}return ans; } void delet(int x,int v) {while(x<=N){remove(C[x],v);x+=lowbit(x);} } int summ(int x,int v) {int ans=0;while(x>0){ans+=find(C[x],v);x-=lowbit(x);}return ans; } int main() {null->s=0;while(scanf("%d%d",&N,&M)==2){init(N);long long ans=0;for(int i=1; i<=N; i++){int d;scanf("%d",&d);A[d]=i;ans+=sum1(N)-sum1(d);add1(d,1);int loc=i;while(loc<=N){insert(C[loc],d); loc+=lowbit(loc);}}for(int i=1; i<=M; i++){int d;printf("%lld\n",ans);scanf("%d",&d);int s1xiaoyu=summ(A[d],d);int ss1=sum1(A[d]);ans-=(ss1-s1xiaoyu);int s2xiaoyu=summ(N,d);ans-=s2xiaoyu-s1xiaoyu;add1(A[d],-1);delet(A[d],d);}}return 0; } /* 5 4 1 5 3 4 2 5 1 4 2 */ View Code

?

轉載于:https://www.cnblogs.com/Opaser/p/4906530.html

總結

以上是生活随笔為你收集整理的uva11990 动态逆序对的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 99re热这里只有精品视频 | 国产一级理论片 | 中文字幕精品久久久久人妻红杏1 | 97国产在线视频 | 97成人资源站| 亚洲.www | 国产无遮挡又黄又爽在线观看 | 欧美性生活网站 | 在线观看无遮挡 | 国产精品久久欧美久久一区 | 欧美激情免费视频 | jizz国产在线观看 | av动漫免费看 | 国产日本视频 | 午夜国产福利 | 不卡av电影在线观看 | 免费色视频| 风韵少妇spa私密视频 | 日韩一区二区中文字幕 | 少妇被躁爽到高潮无码文 | 全黄一级男人和女人 | 色妞网| 欧美精品卡一卡二 | 爱射综合| 在线草| 欧美日韩一区二区在线视频 | 日韩综合av | 黄色短视频在线播放 | 亚洲啪av永久无码精品放毛片 | 久久综合色88 | 天天射天天草 | 西西人体做爰大胆gogo | 国产精品无码AV无码国产 | 天天摸日日 | 天天综合人人 | 夜晚福利视频 | 婷婷激情五月 | 中文字幕88 | 91亚洲专区 | a√在线视频 | 奇米影视大全 | 日韩久久精品电影 | 日本成人在线视频网站 | 乱色视频 | 嫩草影院在线观看视频 | 美女自拍偷拍 | a激情| 午夜tv影院 | 日韩精品在线观看免费 | av中文天堂在线 | 中文字幕在线国产 | 日韩视频福利 | 欧美精品在欧美一区二区 | 国产精品一区二区久久 | 日韩精品免费在线 | 殴美性生活 | 日本视频免费在线 | 老太太av | 爆乳熟妇一区二区三区 | 可以免费看毛片的网站 | 91麻豆视频网站 | 亚洲精品久久久久久国 | 粉嫩av一区二区三区天美传媒 | 精品国产乱码久久 | 日本不卡一二 | 欧美日韩精品一区二区三区蜜桃 | 大陆极品少妇内射aaaaaa | 91色在线观看| 国产精品天干天干 | 人与动物黄色片 | 黄色91在线观看 | 日本亚洲黄色 | 色姑娘综合网 | 成人性色生活片 | 亚洲欧美日韩在线一区二区 | 国产精品久久午夜夜伦鲁鲁 | 原创真实夫妻啪啪av | 欧美日韩精品电影 | 日日干夜夜爱 | 色婷婷激情 | 老牛嫩草二区三区观影体验 | 高清在线一区二区 | 国产福利电影在线 | 日本成人免费在线视频 | 亚洲手机av | 国产特级淫片免费看 | 97超碰免费 | 欧美成人xxxx| 伊人网综合视频 | 嫩草综合 | 欧美精品一二三 | 国产成人高清视频 | 91精品一区二区三区综合在线爱 | 91免费观看入口 | 哺乳喂奶一二三区乳 | 蜜臀人妻四季av一区二区不卡 | 熟妇人妻av无码一区二区三区 | 午夜影视av| 日本xxxx色|