首页 > 其他分享 >树状数组统计一个数前面有几个数比它小,有几个数比它大

树状数组统计一个数前面有几个数比它小,有几个数比它大

时间:2022-12-06 20:12:35浏览次数:45  
标签:1000010 数比 树状 几个 res sum long int

很重要的算法,蓝桥杯遇到n次了

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int a[1000010],c[1000010],b[1000010];
int lowbit(int x)
{
	return x&(-x);
}
int sum(int x)//前缀和 
{
	int res=0;
	while(x>0)
	{
		res+=c[x];
		x-=lowbit(x);
	}
	return res;
}
void add(int x,int k)
{
	while(x<=m)
	{
		c[x]+=k;
		x+=lowbit(x);
	}
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
		a[i]++;
		m=max(m,a[i]);
	}
	for(int i=1;i<=n;i++)
	{
		b[i]+=sum(m)-sum(a[i]);
		add(a[i],1); 
	}
	memset(c,0,sizeof(c));
	for(int i=n;i>=1;i--)
	{
		b[i]+=sum(a[i]-1);
		add(a[i],1);
	}
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		ans+=b[i]*(b[i]+1)/2;
	}
	cout<<ans;
	return 0;
} 

  

标签:1000010,数比,树状,几个,res,sum,long,int
From: https://www.cnblogs.com/wqy2003/p/16960372.html

相关文章

  • Queries Gym - 100741A - 树状数组
    给定\(n\)和\(m\),对于\(n\)个数字\(a_i\),进行下列三种操作:(1)+pr:将p位置的元素加上r,输出此时p位置的值;(2)-pr:将p位置的元素减去r,若p位置的值小......
  • Vue2(笔记20) - 组件 - Vue 非单文件组件 和 几个注意点
    Vue 非单文件组件非单文件组件:一个文件中包含N个组件;单文件组件:一个文件中只包含有1个组件,以 XXX.vue 为组件文件,需要打包;传统做法<divid="root"><h2>学校名称:{{sch......
  • dremio 源码分析学习的几个方便工具 二
    主要是在以前周边工具上做一个简单的扩展说明扩展jdwp调试 可以直接配置dremio开启jdwp方便调试,对于依赖的包可以通过dremio的安装包提供,同时也有一个简单的缺点就......
  • 如何用JDK优雅的实现几个算法
    今天给大家介绍下八股文中的两个重要成员,LinkedHashMap和TreeMap。 这两者都实现了Map接口,也经常会在面试中被拿来与HashMap比较。 到底它们能使用哪些魔法呢,接下来......
  • 1040 有几个PAT
    思路:能构成几个PAT=A前后P和T数量的乘积;......
  • 树状数组学习笔记
    树状数组学习笔记简介树状数组是一个可以在\(O(\logn)\)的时间复杂度内支持单点修改和查询前缀和的操作的数据结构。\(\text{lowbit}\)\(\text{lowbit}\)是指一个......
  • 东莞门面转让必须实行哪些操作?这几个操作才正确
     有时候接手一个门面转让不一定能够帮助自己成功开店,特别是没有实行一些操作的情况下,反而会给自己带来莫名地损失。那么东莞门面转让必须实行哪些操作?今天铺先生为大家介......
  • php持续开发集成中的常用几个工具小结
    在PHP持续开发集成中,有些工具是必须的,而且还不错,下面小结之:1PHPUNIT这个是大名鼎鼎的了,这里不说了2PHPLOC(http://github/sebastianbergma......
  • 几个不错的领导力测试
              ......
  • 几个有用的oracle dba_hist_*查询语句
    耗CPU最多的10条语句select*from(selects.SQL_ID,sum(s.CPU_TIME_DELTA),sum(s.DISK_READS_DELTA),count(*)fromDBA_HIST_SQLSTATsg......