<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      題解:CF1830E Bully Sort

      題目:

      每 bully swap \(i,j\) 會使得 \(\sum_i \left | i-p_i \right |\) 減少 \((2j-2i)\),使得逆序對數減少 \((2j-2i-1)\),
      又因為一個數始終單向移動,所以 bully swap 次數為 \((\sum_i \left | i-p_i \right | - 逆序對數)\)。

      代碼:

      #include<bits/stdc++.h>
      #define ll long long
      using namespace std;
      const int QAQ=5e5+7;
      int n,q,p[QAQ],cnt;
      ll da[QAQ],ans[QAQ],ans1;
      struct xxx {int a,b,c,cnt;} d[QAQ*6];
      int s[QAQ];
      #define lbd(x) (x&(-x))
      void jia(int x,int c)
      {
      	for(int i=x;i<=n;i+=lbd(i)) s[i]+=c;
      }
      int cha(int x)
      {
      	int da=0;
      	for(int i=x;i;i-=lbd(i)) da+=s[i];
      	return da;
      }
      bool cmp1(xxx a,xxx b) {return a.b<b.b;}
      void cdq(int l,int r)
      {
      	if(l==r) return ;
      	int mid=(l+r)>>1,i=l;
      	cdq(l,mid),cdq(mid+1,r),
      	sort(d+l,d+mid+1,cmp1),sort(d+mid+1,d+r+1,cmp1);
      	for(int j=mid+1;j<=r;j++)
      	{
      		while(i<=mid&&d[i].b<=d[j].b) jia(d[i].c,d[i].cnt),i++;
      		ans[d[j].a]+=(ll)d[j].cnt*(cha(n)-cha(d[j].c));
      	}
      	for(int k=l;k<i;k++) jia(d[k].c,-d[k].cnt);
      	i=mid;
      	for(int j=r;j>=mid+1;j--)
      	{
      		while(i>=l&&d[i].b>=d[j].b) jia(d[i].c,d[i].cnt),i--;
      		ans[d[j].a]+=(ll)d[j].cnt*cha(d[j].c-1);
      	}
      	for(int k=mid;k>i;k--) jia(d[k].c,-d[k].cnt);
      }
      signed main()
      {
      	cin>>n>>q;
      	for(int i=1;i<=n;i++) cin>>p[i],ans1+=abs(i-p[i]),d[++cnt]={0,i,p[i],1};
      	for(int i=1,x,y;i<=q;i++)
      		cin>>x>>y,
      		d[++cnt]={i,x,p[x],-1},d[++cnt]={i,y,p[y],-1},
      		ans1-=abs(x-p[x]),ans1-=abs(y-p[y]),
      		swap(p[x],p[y]),
      		d[++cnt]={i,x,p[x],1},d[++cnt]={i,y,p[y],1},
      		ans1+=abs(x-p[x]),ans1+=abs(y-p[y]),
      		da[i]=ans1;
      	cdq(1,cnt);
      	for(int i=1;i<=q;i++) ans[i]+=ans[i-1];
      	for(int i=1;i<=q;i++) cout<<da[i]-ans[i]<<'\n';
      	return 0;
      }
      
      posted @ 2025-10-14 15:10  _a1a2a3a4a5  閱讀(7)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 自拍偷拍第一区二区三区| 好男人社区影视在线WWW| 亚洲深深色噜噜狠狠网站| 欧美裸体xxxx极品| 亚洲国产成人无码影片在线播放| gogogo高清免费观看| 男女性高爱潮免费网站| 日韩秘 无码一区二区三区| 色综合色狠狠天天综合网| 国产精品综合av一区二区| 99久久精品国产一区二区| 亚洲国产中文字幕精品| 又污又爽又黄的网站| 亚洲国产午夜精品理论片| 精品人妻av中文字幕乱| 亚洲一区二区不卡av| 亚洲最大成人av在线天堂网| 天堂网在线.www天堂在线资源 | 亚洲免费一区二区av| 黄床大片免费30分钟国产精品| 香港日本三级亚洲三级| 人人玩人人添人人澡超碰| 中文乱码字幕在线中文乱码| 性男女做视频观看网站| 综合图区亚洲另类偷窥| 亚洲av无码精品色午夜| 国产稚嫩高中生呻吟激情在线视频| 国产精品一二三区久久狼| 国产精品久久久国产盗摄| 一个色综合国产色综合| 久久人与动人物a级毛片| 久久99国产精品尤物| 人妻另类 专区 欧美 制服| 视频一本大道香蕉久在线播放| 国产午夜亚洲精品国产成人| 女人喷水高潮时的视频网站| 国产a在视频线精品视频下载| 熟女视频一区二区三区嫩草| 午夜dv内射一区二区| 97精品国产91久久久久久久| 一区二区三区四区五区自拍|