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

排队问题--逆序对应用

对于逆序对,我们可以用树状数组的方式来求,但是值得注意的是,我们逆序对一般求的是比这个元素小的个数(位置可以是前或者后),那么求比这个元素大的个数怎么办,我们可以用 i - query() !!!

在这里插入图片描述

每个元素交换的个数就是在它之前且比它大和在它之后比它小的元素个数之和

#include<bits/stdc++.h>
using namespace std;#define int long long
int n;
const int N = 1e6 + 5;
int a[N];
int b[N];
int c[N];
int lowbit(int x) { return x & (-x); }void add(int x, int p) {for (int i = x; i <= N-1; i += lowbit(i)) {b[i] += p;}
}int query(int x) {int sum = 0;for (int i = x; i; i -= lowbit(i)) {sum += b[i];}return sum;
}signed main() {cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];a[i] += 1;}// 开始算自己后面比自己小的个数for (int i = n; i >= 1; i--) {c[i] += query(a[i]-1);add(a[i], 1);}memset(b, 0, sizeof b);for (int i = 1; i <= n; i++) {c[i] += (i - 1 - query(a[i]));add(a[i], 1);}int ans = 0;for (int i = 1; i <= n; i++) {ans += ((c[i] + 1) * c[i]) / 2;}cout << ans;return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用druid对sql进行血缘解析
  • 去除重复字母
  • Python酷库之旅-第三方库Pandas(027)
  • 分类题解清单
  • 网络请求之urllib.request的使用(Get方式)
  • 数组 704.二分查找法
  • which 命令在Linux中是一个快速查找可执行文件位置的工具
  • el-table的selection多选表格改为单选
  • 【Diffusion学习】【生成式AI】Stable Diffusion、DALL-E、Imagen 背後共同的套路
  • 美式键盘 QWERTY 布局的来历
  • TS 入门(七):TypeScript模块与命名空间
  • Unity宏和编辑器
  • 基础动态规划题目基础动态规划题目
  • Java 快速入门学习 -- Day 2
  • 【持续集成_06课_Jenkins高级pipeline应用】
  • 0x05 Python数据分析,Anaconda八斩刀
  • 4个实用的微服务测试策略
  • eclipse的离线汉化
  • HTTP中GET与POST的区别 99%的错误认识
  • JavaScript-Array类型
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Mysql5.6主从复制
  • PermissionScope Swift4 兼容问题
  • web标准化(下)
  • 第十八天-企业应用架构模式-基本模式
  • 浮现式设计
  • 聚类分析——Kmeans
  • 理解在java “”i=i++;”所发生的事情
  • 如何在GitHub上创建个人博客
  • 算法---两个栈实现一个队列
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 小程序开发中的那些坑
  • 学习JavaScript数据结构与算法 — 树
  • 一个JAVA程序员成长之路分享
  • 以太坊客户端Geth命令参数详解
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • $jQuery 重写Alert样式方法
  • (13)Hive调优——动态分区导致的小文件问题
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)斐波那契Fabonacci函数
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (剑指Offer)面试题34:丑数
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)h264中avc和flv数据的解析
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .apk文件,IIS不支持下载解决
  • .Net 6.0--通用帮助类--FileHelper
  • .net core使用ef 6
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化