逆序对————权值线段树+离散化写法

今天写道这么一道题,鉴于不太熟悉归并和树状数组,还是用线段树水一下(

板子如下

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N=5e5+10;
#define int long long
#define lc u<<1
#define rc u<<1|1
struct Tree{int l,r,val;
}tr[N*4];
int n;
void pushup(int u){tr[u].val=tr[lc].val+tr[rc].val;//维护个数 区间大于id的个数就是逆序对个数
}
void build(int u,int l,int r){//写成数组形式可以免掉这一段的,但是写习惯了tr[u]={l,r};if(l==r) return;int m=(l+r)>>1;build(lc,l,m);build(rc,m+1,r);pushup(u);
}
void update(int u,int x){if(tr[u].l==tr[u].r){tr[u].val++;return;}int m=(tr[u].l+tr[u].r)>>1;if(x<=m) update(lc,x);else update(rc,x);pushup(u); 
}
int query(int u,int l,int r){if(l<=tr[u].l&&tr[u].r<=r){return tr[u].val;}//cout<<1<<endl;int m=(tr[u].l+tr[u].r)>>1;int num=0;if(l<=m) num+=query(lc,l,r);if(r>m) num+=query(rc,l,r);return num;
}
signed main(){cin>>n;vector<int> a(n+1);vector<int> b(n+1);for(int i=1;i<=n;++i) cin>>a[i],b[i]=a[i];sort(b.begin()+1,b.begin()+1+n);int ans=0;int m=unique(b.begin()+1,b.begin()+1+n)-(b.begin()+1);//离散化,这里不离散化也行,不是所有时候都会卡这里的数据build(1,1,m);for(int i=1;i<=n;++i){int id=lower_bound(b.begin()+1,b.begin()+1+m,a[i])-b.begin();update(1,id);ans+=query(1,id+1,m);//cout<<query(1,id+1,m)<<endl;}//for(int i=1;i<=n;++i) cout<<tr[i].val<<endl;cout<<ans<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/787851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java版本学习网站又添加了一个libgdx模块

java版本学习网站之前添加了docker&#xff0c;想了想还是再把libgdx添加进去吧。 访问地址&#xff1a;想飞跃的鱼 (nanshaws.github.io) github地址&#xff1a;nanshaws/JavaLearnNote: The new features from Java 9 to Java 21 help you quickly grasp the key features …

Mysql中的那些索引

主键索引 表的主键使用的就是主键索引&#xff0c;一张表只能有一个主键索引&#xff0c;主键索引不能为null,且不能重复。 主键索引存在于B树的非叶子节点&#xff0c;叶子节点存放的是数据。 非主键索引 非主键索引也叫二级索引&#xff0c;包括有唯一索引&#xff0c;普…

工业项目能耗管理可以看这个开源项目

软件介绍 Scaphandre是一个专注于电力和能源消耗指标的计量代理&#xff0c;旨在为公司和个人提供测量技术服务功耗的便捷工具&#xff0c;并以便于理解的方式获取数据。其名字来源于法语中的潜水服或潜水器&#xff0c;象征着深入测量和揭示技术服务耗能量的意图。 功能特点 …

【攻防世界】file_include (PHP伪协议+过滤器)

打开题目环境&#xff1a; 进行PHP代码审计&#xff0c;发现这是一个文件包含漏洞。 我们尝试利用PHP伪协议中的 php://filter来读取 check.php 中的内容。 构造payload 并提交&#xff1a; 发现payload被过滤掉了&#xff0c;我们就需要尝试使用不同的转换器。 PHP各类转换…

最新AI智能系统ChatGPT网站源码V6.3版本,GPTs、AI绘画、AI换脸、垫图混图+(SparkAi系统搭建部署教程文档)

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持GPT…

【PySide6】PySide6安装及VSCode配置PySide6环境

文章目录 1、PySide6安装2、VSCode配置PySide6环境2.1、安装插件PYQT Integration2.2、配置插件2.3、视频参考 1、PySide6安装 打开cmd窗口输入下面的命令&#xff0c;耐心等待一会。 pip install pyside6因为我使用的是anaconda虚拟环境安装&#xff0c;pyside6的安装路径如…

macad.interaction解析workspace

1. using Macad.Occt; // 引入Macad.Occt命名空间&#xff0c;提供对OpenCascade CAD内核的访问namespace Macad.Interaction {public sealed class AndSelectionFilter : ISelectionFilter // 定义名为AndSelectionFilter的类&#xff0c;实现了ISelectionFilter接口{readonl…

主流公链 - Fantom

Fantom&#xff1a;高性能的区块链协议 Fantom是一种开创性的区块链协议&#xff0c;旨在革新去中心化应用和数字金融领域 技术特点 共识机制 Lachesis协议&#xff1a;Fantom使用了Lachesis协议作为其共识算法。Lachesis是一种 异步拜占庭容错&#xff08;ABFT&#xff09;共…

java调用c++,使用clion进行JNI开发,ddl包生成以及so包生成

java调用c&#xff0c;使用clion进行JNI开发&#xff0c;ddl包生成以及so包生成 java基础代码生成C头部文件使用clion写C实现代码cmke打包构建使用java调用C执行linux环境下产生CPP的so包 java基础代码 先写好对应的基础代码&#xff0c;先不管static加载的ddl文件&#xff0c…

主干网络篇 | YOLOv8改进之用RCS-OSA替换C2f(来源于RCS-YOLO)

前言:Hello大家好,我是小哥谈。RCS-YOLO是一种目标检测算法,它是基于YOLOv3算法的改进版本。通过查看RCS-YOLO的整体架构可知,其中包括RCS-OSA模块。RCS-OSA模块在模型中用于堆叠RCS模块,以确保特征的复用并加强不同层之间的信息流动。本文就给大家详细介绍如何将RCS-YOLO…

freeRTOS学习

总结 1.总结任务调度算法之间的区别 调度算法&#xff1a;抢占式调度&#xff1a;优先级高的任务可以打断低优先级任务的执行&#xff0c;适用于不同优先级任务的执行。 时间片轮换&#xff1a;分配时间片&#xff08;1ms&#xff09;&#xff0c;时间片耗尽时&#xff0c;任…

入门编程第一步,从记住这些单词开始

** 入门编程第一步&#xff0c;从记住这些单词开始 ** 2023-10-18 一、交互式环境与 print 输出 1、print : 打印/输出 2、coding : 编码 3、syntax : 语法 4、error : 错误 5、invalid : 无效 6、idenfifier : 名称/标识符 7、character : 字符 二、字符串的操作&#x…

[羊城杯 2020]EasySer

[羊城杯 2020]EasySer 进入页面&#xff0c;发现是ubuntuapache2&#xff0c;但是好像没啥用 尝试访问/robots.txt&#xff0c;得到 访问/star1.php/&#xff0c;查看源码&#xff0c;得到提示 一看就知道是ssrf&#xff0c;使用http://127.0.0.1/ser.php&#xff0c;得到…

鸿蒙OS开发实例:【ArkTS类库异步并发async/await】

async/await是一种用于处理异步操作的Promise语法糖&#xff0c;使得编写异步代码变得更加简单和易读。通过使用async关键字声明一个函数为异步函数&#xff0c;并使用await关键字等待Promise的解析&#xff08;完成或拒绝&#xff09;&#xff0c;以同步的方式编写异步操作的代…

前端图片放大(Element UI中的el-image,Element UI中的图片放大功能)

简介&#xff1a;Element UI 中&#xff0c;为了实现图片的大图预览功能&#xff0c;可以使用 el-image 组件来完成。这里来简单记录一下 一、首先看下html部分 <div class"eventImg_box" click"choseEventImg(item)"><el-image:src"item.e…

关系(二)利用python绘制热图

关系&#xff08;二&#xff09;利用python绘制热图 热图 &#xff08;Heatmap&#xff09;简介 热图适用于显示多个变量之间的差异&#xff0c;通过颜色判断彼此之间是否存在相关性。 快速绘制 基于seaborn import seaborn as sns import pandas as pd import numpy as np i…

常用的SQL语句以及它们的作用和示

以下是一些常用的SQL语句以及它们的作用和示例&#xff1a; 1. **SELECT**&#xff1a;从数据库中检索数据 - 例子&#xff1a;SELECT * FROM employees; 2. **INSERT INTO**&#xff1a;向数据库表中插入新记录 - 例子&#xff1a;INSERT INTO employees (id, name, age) VALU…

Maximum Product(UVA 11059)

网址如下&#xff1a; Maximum Product - UVA 11059 - Virtual Judge (vjudge.net) &#xff08;第三方网站&#xff09; 简单枚举题&#xff0c;枚举就行&#xff0c;只是要注意数字太大导致“爆了”&#xff0c;用个long long int来记录 不过话说回来&#xff0c;关于数字…

【微服务】软件架构的演变之路

目录 单体式架构的时代单体式架构(Monolithic)优点缺点适用场景单体式架构面临诸多问题1.宽带提速&#xff0c;网民增多2.Web2.0时代的特点问题描述优化方向 集群优点缺点适用场景搭建集群后面临诸多问题用户请求问题用户的登录信息数据查询 改进后的架构 垂直架构优点缺点 分布…

OpenResty基于来源IP和QPS来限流

QPS限流 使用OpenResty进行限流的几种常见方法&#xff1a; 按QPS&#xff08;每秒查询率&#xff09;限流&#xff1a; 使用ngx_http_limit_req_module模块&#xff0c;可以限制每个客户端的请求速率。这个模块使用漏桶算法来控制请求的速率。 在Nginx配置文件中&#xff0…