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

news/2024/11/28 20:35:08/

输入样例:

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.ppmy.cn/news/978032.html

相关文章

【GEE笔记】主成分分析(PCA)算法的实现和应用

前言 主成分分析&#xff08;PCA&#xff09;是一种常用的降维方法&#xff0c;它可以将多个相关的变量转换为少数几个不相关的变量&#xff0c;称为主成分&#xff08;PC&#xff09;。这些主成分可以反映原始变量的大部分信息&#xff0c;同时减少数据的复杂度和冗余性。在遥…

微服务笔记---Nacos集群搭建

微服务笔记---Nacos集群搭建 Nacos集群搭建1.集群结构图2.搭建集群2.1.初始化数据库2.2.下载nacos2.3.配置Nacos2.4.启动2.5.nginx反向代理2.6.优化 Nacos集群搭建 1.集群结构图 官方给出的Nacos集群图&#xff1a; 其中包含3个nacos节点&#xff0c;然后一个负载均衡器代理…

Redis追本溯源(三)内核:线程模型、网络IO模型、过期策略与淘汰机制、持久化

文章目录 一、Redis线程模型演化1.Redis4.0之前2.Redis4.0之后单线程、多线程对比3.redis 6.0之后 二、Redis的网络IO模型1.基于事件驱动的Reactor模型2.什么是事件驱动&#xff0c;事件驱动的Reactor模型和Java中的AIO有什么区别3.异步非阻塞底层实现原理 三、Redis过期策略1.…

【Gray Hat Python】构建自己的windows调试器

环境准备 windows10 64bit python3.7 64bit 打开可执行文件&#xff0c;创建进程 定义变量 以下代码用 ctypes 定义了调用 windows API 需要的结构 my_debugger_define.py import ctypesWORD ctypes.c_ushort DWORD ctypes.c_ulong LPBYTE ctypes.POINTER(ctypes.c_uby…

linux 系统编程

文件IO 从本章开始学习各种Linux系统函数,这些函数的用法必须结合Linux内核的工作原理来理解, 因为系统函数正是内核提供给应用程序的接口, 而要理解内核的工作原理,必须熟练掌握C语言, 因为内核也是用C语言写的, 我们在描述内核工作原理时必然要用“指针”、“结构体”、“链表…

企业面临的数据泄露途径有哪些?该如何防范?

随着数字经济蓬勃发展&#xff0c;数据对于企业的价值与重要性不断攀升&#xff0c;随之而来的数据安全风险也不断涌现。近年来&#xff0c;数据泄露事件时有发生&#xff0c;对企业财产安全、声誉等构成极大威胁。 常见的企业数据泄露途径有哪些&#xff1f; ● 内部员工泄露…

【920信号与系统笔记】第四章 连续时间系统的频域分析

第四章 连续时间系统的频域分析 4.1引言4.2信号通过系统的频域分析方法频域系统函数H(jw)系统在周期性信号激励下的频域分析系统在非周期信号激励下的频域分析周期信号和非周期信号分析方法比较 4.1引言 频域分析法 1.步骤 1.时域求解响应的问题通过傅里叶级数或者傅里叶变换转…

express 路由匹配和数据获取

express配置路由只需要通过app.method(url,func)来配置&#xff0c;其中url配置和其中的参数获取方法不同 直接写全路径 路由中允许存在. get请求传入的参数 router.get("/home", (req, res) > {res.status(200).send(req.query); });通过/home?a1会收到对象…