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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Mato的文件管理 (莫队)题解

發(fā)布時(shí)間:2025/4/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mato的文件管理 (莫队)题解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

思路:

莫隊(duì)模板題,轉(zhuǎn)換幾次就是找逆序數(shù),用樹狀數(shù)組來儲存數(shù)就行了

注意要離散化

代碼:

#include<queue> #include<cstring> #include<set> #include<map> #include<stack> #include<cmath> #include<vector> #include<cstdio> #include<iostream> #include<algorithm> #define ll long long const int N = 50000+5; using namespace std; int k[N],p[N],arr[N],pos[N],ans[N],n,m; struct node{int l,r;int id; }e[N]; bool cmp(node a,node b){return pos[a.l] == pos[b.l]? a.r < b.r : pos[a.l] < pos[b.l];} int lowbit(int x){return x&(-x); } void update(int x,int val){for(int i = x;i <= n;i += lowbit(i))arr[i] += val; } int sum(int x){int ret = 0;for(int i = x;i > 0;i -= lowbit(i)){ret += arr[i];}return ret; } void Do(){//i位置 //L右移,逆序?qū)?shù)減少p[i]的逆序數(shù) //L左移,逆序?qū)?shù)增加p[i-1]的逆序數(shù) //R右移,逆序?qū)?shù)增加大于p[i+1]的數(shù) //R左移,逆序?qū)?shù)減少大于p[i]的數(shù) int L = 1,R = 0;int ret = 0;for(int i = 1;i <= m;i++){while(L < e[i].l){update(p[L],-1);ret -= sum(p[L] - 1);L++;}while(L > e[i].l){L--;update(p[L],1);ret += sum(p[L] - 1);}while(R < e[i].r){R++;update(p[R],1);ret += R - L + 1 - sum(p[R]); //大于減去自己和比己小的 }while(R > e[i].r){update(p[R],-1);ret -= R - L -sum(p[R]);R--;}ans[e[i].id] = ret;} } int main(){scanf("%d",&n);int block = sqrt(n);for(int i = 1;i <= n;i++){scanf("%d",&p[i]);k[i] = p[i];pos[i] = (i - 1) / block + 1;}sort(k+1,k+n+1);for(int i = 1;i <= n;i++) p[i] = lower_bound(k+1,k+n+1,p[i]) - k;scanf("%d",&m);for(int i = 1;i <= m;i++){scanf("%d%d",&e[i].l,&e[i].r);e[i].id = i;}sort(e+1,e+m+1,cmp); //分塊 Do();for(int i =1;i <= m;i++)printf("%d\n",ans[i]);return 0; }


轉(zhuǎn)載于:https://www.cnblogs.com/KirinSB/p/9408798.html

總結(jié)

以上是生活随笔為你收集整理的Mato的文件管理 (莫队)题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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