当前位置: 首页 > news >正文

题解: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;
}
http://www.rkmt.cn/news/20887.html

相关文章:

  • 单片机概念
  • Androidify:基于Gemini AI的安卓机器人定制应用
  • popcount 题
  • 2025 年最新推荐操作台厂家排行榜:覆盖指挥中心 / 控制室 / 中控室 / 监控室 / 调度室场景,为用户选购优质产品提供专业参考
  • 毕业论文技巧:Word中使用Mathtype对公式自动编号(带章节号)
  • 浅谈InheritableThreadLocal---可继承的小书包
  • 如何理解面向对象?
  • mns 1014
  • 采用虚幻引擎(UE5)打造黑夜场景氛围
  • 2025 年电磁流量计厂家推荐:湖北南控仪表科技有限公司专业设备供应与行业适配解决方案
  • 自动化测试框架选型指南:数据驱动、关键字驱动还是混合模式?
  • 直播软件搭建避坑!从直播源码选型到运维,3步搞定上线+降本60%
  • 实验报告2
  • (在构造函数中)调用super(props)的目的是什么?
  • Zemax:初学者的混合模式 - 指南
  • 西门子博图软件TIA V18使用PLCSIM Advanced V5.0进行仿真与其他程序进行通讯
  • MyEclipse 2017/2018 安装与破解 图文教程
  • 面向对象初级
  • 【文章目录】
  • Excel DDE 教學:即時資料交換的詳細指南 - 指南
  • 实用指南:JavaWeb 课堂笔记 —— 24 AOP 面向切面编程
  • ESP8266 PMW使用的简单介绍
  • 加州新规要求AI必须表明其AI身份
  • 详细介绍:【rabbitmq 高级特性】全面详解RabbitMQ TTL (Time To Live)
  • 低代码平台底层协议设计
  • 2025 年热处理钎焊炉工装夹具厂家推荐榜:钎焊炉用耐热钢工装夹具厂家,聚焦品质与适配,助力企业高效生产
  • 实用指南:基于Spring Boot与SSM的社团管理系统架构设计
  • 完整教程:数据结构 01 线性表
  • 2025年耐磨轮胎厂家最新推荐排行榜,矿山耐磨轮胎,工程耐磨轮胎,重载耐磨轮胎公司推荐!
  • 行列式按多行或列展开