首页 > 其他分享 >【板子】树状数组(BIT)

【板子】树状数组(BIT)

时间:2024-01-26 20:58:03浏览次数:27  
标签:origin 树状 int data ll 板子 ls BIT Data

//lg 1908 求逆序对
//Copyright yeyou26
#include<bits/stdc++.h>
using namespace std;

#define ll long long 

const int N = (int)1e6+6;

ll sum;

int n;

struct Data
{
    int origin;
    int ls;
    int id;
}data[N];
bool cmporigin(Data x,Data y)
{
    return x.origin<y.origin;
}
bool cmpid(Data x,Data y)
{
    return x.id<y.id;
}

struct Binary_Indexed_Tree
{
    int a[N];
    void Modify(int where,int value)
    {
        while(where<=N) a[where]+=value,where+=(where&(-where));
    }
    int Query(int where)
    {
        int ans=0;
        while(where) ans+=a[where],where-=(where&(-where));
        return ans; 
    }
}Bit;

int main()
{
    // freopen("working.in","r",stdin);
    // freopen("working.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&data[i].origin);
        data[i].id=i;
    }
    sort(data+1,data+1+n,cmporigin);
    int idx=0;
    for(int i=1;i<=n;i++) 
    {
        if(data[i].origin!=data[i-1].origin) data[i].ls=++idx;
        else data[i].ls=idx;
    }
    sort(data+1,data+1+n,cmpid);
    for(int i=n;i>=1;i--)
    {
        Bit.Modify(data[i].ls,1);
        sum+=Bit.Query(data[i].ls-1);
    }
    cout<<sum;
    return 0;
}

标签:origin,树状,int,data,ll,板子,ls,BIT,Data
From: https://www.cnblogs.com/yeyou26/p/17990681

相关文章

  • 【板子】强连通分量(SCC)
    //强连通分量//lg2863求强连通分量的数量#include<bits/stdc++.h>usingnamespacestd;constintN=(int)2e4+4;intwhere[N];//这个点在哪个scc里intscccnt;intsccsize[N];intlow[N],dfn[N],idx;boolinstk[N];stack<int>stk;vector<int>e[N];intn,m;......
  • 【板子】字符串哈希
    //lgp3370//Copyrightyeyou26#include<bits/stdc++.h>usingnamespacestd;#defineullunsignedlonglongstrings;intn;constullp=998244353;ullnow_hash;ullv[100005];intcnt;intans;voidget_hash();voiddo_compare();voidinit()......
  • 【板子】字符串最小表示法
    //lgp1368//Copyrightyeyou26#include<bits/stdc++.h>usingnamespacestd;longlonga[600005];intn;voidinit();voidsolve(){inti=1,j=2,k=0;while(i<=n&&j<=n){k=0;while(a[i+k]==a[j+k]&&am......
  • 【板子】KMP
    //lgp3375//Copyrightyeyou26#include<bits/stdc++.h>usingnamespacestd;charp[1000005],s[1000005];intlenp,lens;intlst[1000005];voidinit();voidpre_work();voidkmp();voidout_put();intmain(){freopen("working.in",&qu......
  • 树状数组(区间修改&&区间查询)
    #include<bits/stdc++.h> #defineintlonglongusingnamespacestd;intn,m,x,x1,y,z;inta[100010],d[100010],c[100010];intlowbit(intnum){returnnum&-num;}voidadd(intx,inty){ inta=x; while(x<=n)d[x]+=y,c[x]+=(a-1)*y,x+=lowbit(x); ......
  • windows的bitlocker解密
    概念WindowsBitLocker驱动器加密通过加密Windows操作系统卷上存储的所有数据可以更好地保护计算机中的数据。BitLocker使用TPM(受信任的平台模块)帮助保护Windows操作系统和用户数据,并帮助确保计算机即使在无人参与、丢失或被盗的情况下也不会被篡改。 取证方法(目前想到的)想要......
  • nodejs消费rabbitmq队列消息
    index.jsvaramqp=require('amqplib/callback_api');constMyConsume=require('./MyConsume');amqp.connect('amqp://name:password!@localhost:5672/vhost',function(error0,connection){if(error0){throwerror......
  • 正常数组转换为树状结构
    1、这里子元素的标识是menuId,父id是parentId//转化后的树形结构数据getTree(menuList){letmenus=[];letsourceMap={};menuList.forEach(item=>{item.children=[];......
  • 【UE插件DTRabbitMQ】 虚幻引擎蓝图连接RabbitMQ服务器使用插件说明
    本插件可以使用蓝图连接RabbitMQ服务器,并推送或者监听消息。下载地址地址在文章最后。 1.节点说明CreateRabbitMQClient-创建RabbitMQ客户端对象创建一个RabbitMQ客户端对象,返回的对象需要提升为变量,以后就是用这个对象去操作。Connect-链接服务器链接到Rabbit......
  • 【豆瓣8.4】《RabbitMQ实战指南》PDF
    内容简介《RabbitMQ实战指南》从消息中间件的概念和RabbitMQ的历史切入,主要阐述RabbitMQ的安装、使用、配置、管理、运维、原理、扩展等方面的细节。《RabbitMQ实战指南》大致可以分为基础篇、进阶篇和高阶篇三个部分。基础篇首先介绍RabbitMQ的基本安装及使用方式,方便零基础的读者......