AcWing241. 楼兰图腾(树状数组)

news2024/10/2 14:25:51

输入样例:

5
1 5 3 2 4

输出样例:

3 4

 解析:

        以某个点 i 为最低点的 V 的数量,为 i 左侧和右侧比 a[ i ] 大的数量 a,b 的乘积。

        但是,直接求这两个数的复杂度为O(n),则整个复杂度为O( n^2 ),数据量2e5超时。

        所以需要将查询a,b两个数的复杂度讲到 logn 以下。

        树状数组的下标储存 a[ i ],值储存 a[ i ] 的个数,所以,先计算 a[ i ] 左侧比 a[ i ] 大的数量,再计算右侧的数量,乘积加和即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
int n,great[N],low[N],c[N],a[N];
int lowbit(int x){return x&-x;}
void add(int x){
	for(int i=x;i<=n;i+=lowbit(i)) c[i]+=1;
}
int sum(int x,int y){
	int res=0;
	for(int i=y;i;i-=lowbit(i)) res+=c[i];
	for(int i=x-1;i;i-=lowbit(i)) res-=c[i];
	return res;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=n;i++){
		great[i]=sum(a[i]+1,n);	//计算 i 左侧大于a[i]的数量 
		low[i]=sum(1,a[i]-1);	//计算 i 左侧小于a[i]的数量
		add(a[i]);
	}
	ll cnt1=0,cnt2=0;
	memset(c,0,sizeof c);
	for(int i=n;i;i--){
		cnt1+=great[i]*(ll)sum(a[i]+1,n);
		cnt2+=low[i]*(ll)sum(1,a[i]-1);
		add(a[i]);
	}
	cout<<cnt1<<" "<<cnt2;
	return 0;
}

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

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

相关文章

TortoiseGit安装

1、TortoiseGit简介 TortoiseGit是基于TortoiseSVN的Git版本的Windows Shell界面。它是开源的&#xff0c;可以完全免费使用。 TortoiseGit 支持你执行常规任务&#xff0c;例如commit、显示日志、区分两个版本、创建分支和标签、创建补丁等。 2、TortoiseGit下载 (1)Tortois…

MySQL高级篇第2章(MySQL的数据目录)

文章目录 1、MySQL8的主要目录结构1.1 数据库文件的存放路径1.2 相关命令目录1.3 配置文件目录 2、数据库和文件系统的关系2.1 查看默认数据库2.2 数据库在文件系统中的表示2.3 表在文件系统中的表示2.3.1 InnoDB存储引擎模式2.3.2 MyISAM存储引擎模式 2.4 小结 1、MySQL8的主要…

论文笔记--Skip-Thought Vectors

论文笔记--Skip-Thought Vectors 1. 文章简介2. 文章概括3 文章重点技术3.1 Skip Thought Vectors3.2 词表拓展 4. 文章亮点5. 原文传送门6. References 1. 文章简介 标题&#xff1a;Skip-Thought Vectors作者&#xff1a;Ryan Kiros, Yukun Zhu, Ruslan Salakhutdinov, Rich…

【设计模式——学习笔记】23种设计模式——桥接模式Bridge(原理讲解+应用场景介绍+案例介绍+Java代码实现)

问题引入 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网&#xff0c;打电话等)&#xff0c;如图 【对应类图】 【分析】 扩展性问题(类爆炸)&#xff0c;如果我们再增加手机的样式(旋转式)&#xff0c;就需要增加各个品牌手机的类&#xff0c;同样如果我们…

JDK9 接口特性(heima)

JDK9 接口特性&#xff08;heima&#xff09; 将log方法私有化

04. Idea集成Docker

目录 1、前言 2、开启docker远程 2.1、配置远程访问模式 2.2、重启docker服务 2.3、验证 3、Idea配置Docker 3.1、配置证书登录 4、创建Dockerfile 4.1、编写Dockerfile 4.2、配置启动项 4.3、访问接口 1、前言 上一节中&#xff0c;我们介绍了Dockerfile的方式构建…

MURF20100CT-ASEMI快恢复对管20A 1000V

编辑&#xff1a;ll MURF20100CT-ASEMI快恢复对管20A 1000V 型号&#xff1a;MURF20100CT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 恢复时间&#xff1a;50ns 正向电流&#xff1a;20A 反向耐压&#xff1a;1000V 芯片大小&#xff1a;102MIL*2 芯片个数&…

C语言每日一题:4.消失的数字+数字在升序数组中出现的次数+整数转换

消失的数字&#xff1a; 思路1&#xff1a;排序遍历 1.使用qsort排序数组判断当前数值1是否是数组下一个元素的数值。 2.如果是一直循环注意数组越界&#xff0c;如果不是那么当前的数组的数值1就是消失的数。 3.存在0——n的数字是第n个数没有了。循环过程中从头到尾也找不到这…

C++ 哈希的应用【位图】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2022 版本 17.6.5 文章目录 &#x1f307;前言&#x1f3d9;️正文1、问题一2、位图概念3、位图的模拟实现3.1、基本思路3.2、set3.3、reset3.4、…

从电商指标洞察到运营归因,只需几句话?AI 数智助理准备好了!

Lily 是名入职不久的电商运营助理&#xff0c;最近她想要根据 2022 年的客单价情况&#xff0c;分析品牌 A 在不同电商渠道的用户行为和表现&#xff0c;并提供一些有价值的洞察和建议给客户。然而在向技术人员提报表需求后&#xff0c;技术人员以需求排满为借口拒绝了。 Lily …

STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数)

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子&#xff0c;使用STM32CUBEMX做了很多驱动&#x…

速锐得开发社区-新一代汽车网络通信技术CAN FD的特点归纳

随着汽车工业的快速发展&#xff0c;汽车逐渐走向智能化&#xff0c;功能也越来越丰富&#xff0c;例如特斯拉、比亚迪、理想汽车为代表&#xff0c;在车载导航、驻车雷达、胎压监测、倒车影像、无钥匙启动、定速巡航、自动泊车、高级辅助驾驶系统、自动驾驶、域控制器、智能网…

慎投!中科院2区TOP期刊被标记为“On Hold”!

近日&#xff0c;小编从科睿唯安旗下的“Master Journal List”官网查到&#xff0c;知名老牌期刊Chemosphere竟然被标记为“On Hold”状态&#xff01;究竟是怎么回事呢&#xff1f; 中科院TOP期刊标记为“On Hold” 出版社&#xff1a;Elsevier ISSN&#xff1a;0045-6535 …

【广州华锐互动】无人值守变电站AR虚拟测控平台

无人值守变电站AR虚拟测控平台是一种基于增强现实技术的电力设备巡检系统&#xff0c;它可以利用增强现实技术将虚拟信息叠加在真实场景中&#xff0c;帮助巡检人员更加高效地完成巡检任务。这种系统的出现&#xff0c;不仅提高了巡检效率和准确性&#xff0c;还降低了巡检成本…

vray GPU渲染如何设置?最适合 VRay 渲染的 GPU 是什么?

Chaos 提供的 Vray GPU是一个独立的渲染引擎&#xff0c;提供 GPU 硬件加速。它还与 CPU&#xff08;处理器&#xff09;配合使用&#xff0c;并利用 CPU 和 GPU 硬件进行无缝混合渲染。 GPU 渲染使 Vray GPU 渲染引擎能够在系统的 GPU 而不是 CPU 上执行光线跟踪计算。由于 G…

Linux学习之case

case的格式如下&#xff1a; case "变量" in值1)指令集1;;值2)指令集2;;*)指令集n;; esaccase会将变量的值跟值1、值2等进行比较&#xff0c;符合就执行后边对应的指令集&#xff0c;注意)只是一个标识&#xff0c;表明这是一个分支&#xff0c;;;是一个分支结束&am…

Qt控件样式设置、QSS语法介绍

一、前言 QT是比较流行的跨平台应用程序框架,提供了丰富的控件库和功能强大的工具,用于创建各种类型的应用程序。虽然QT默认提供的样式看起来很不错,但是如果想要自定义的应用程序的外观,可以使用QT样式表(QSS)来设置控件的外观和行为。 QSS是一种基于CSS的样式表语言,…

DB-GPT:强强联合Langchain-Vicuna的应用实战开源项目,彻底改变与数据库的交互方式

今天看到 蚂蚁科技 Magic 开源的DB-GPT项目&#xff0c;觉得创意很好&#xff0c;集成了当前LLM的主流技术&#xff0c;主要如下 Langchain&#xff1a; 构建在LLM之上的应用开发框架HuggingFace: 模型标准&#xff0c;提供大模型管理功能Vicuna: 一个令GPT-4惊艳的开源聊天机…

odoo服务相关shell脚本

odoo服务相关shell脚本 1 确定系统不会自动休眠 ubuntu 22.04登陆之后&#xff0c;如果系统较长时间不操作&#xff0c;系统就自动休眠了。 如果重启之后&#xff0c;从来都没有登陆&#xff0c;就不会出现系统自动休眠的情况。 观察系统日志&#xff0c;发现类似如下的内容…

学好Elasticsearch系列-Mapping

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 文章目录 Mapping 的基本概念查看索引 Mapping 字段数据类型数字类型基本数据类型Keywords 类型Dates&#xff08;时间类型&#xff09;对象类型空间数据类型文档排名类型文本搜索类型 两种映射类型自动映射&…