首页 > 其他分享 >luogu 1908 逆序对板子

luogu 1908 逆序对板子

时间:2022-10-27 18:58:42浏览次数:89  
标签:int luogu long add 1908 include 逆序

 

逆序对的本质是二维偏序

 

给第一维排序(输入时已排好),统计 y(k)>=y(i) k<i 的个数

用树状数组维护 y 值 前缀和,需要的时候直接查询

该题需要离散化这个y ,再作为树状数组的下标

 

 #include <iostream>
 #include <algorithm>
 using namespace std; 
  const int N=5e5+2;
  
  #define int long long
  int n,a[N];
  int len,b[N];
  
 int tr[N];
 int lowbit(int x){
     return x&-x;
 }
 void add(int x,int v){
     for(;x<=n;x+=lowbit(x)) tr[x]+=v;
 }
 int q(int x){
     int t=0;
     for(;x;x-=lowbit(x)) t+=tr[x];
     return t;
 }
 
 int rk(int x){
     return lower_bound(b+1,b+1+len,x)-b;
 }
 void solve(){
     int i,ans;
     for(i=1;i<=n;i++) b[i]=a[i];
     
     sort(b+1,b+1+n);
     len=unique(b+1,b+1+n)-b-1;
     
     ans=0;
     for(i=n;i>=1;i--){
         int t=rk(a[i]);
         add(t,1);
         ans+=q(t-1);
     }
    cout<<ans<<'\n';
 }
 signed main(){
     int i;
     cin>>n;
     for(i=1;i<=n;i++) cin>>a[i];
     solve();
     
 }
 
 
 

 

标签:int,luogu,long,add,1908,include,逆序
From: https://www.cnblogs.com/towboa/p/16833313.html

相关文章

  • luogu 4588
    给xx这个数进行操作1m:将 xx 变为x,并输出 x%mod2pos:将 xx 变为 xx 除以第 pos 次操作所乘的数(保证第 pos 次操作一定为类型1,对于每一个类型1的操作至多......
  • Luogu P5658 括号树
    LuoguP5658括号树来补一道当年考场上没做出来的题。不难想到树上DP,关键在于如何设置函数与转移。按题意,记$k_i$为以$s_i$结尾的串中的合法子串数;记$cnt_i$为......
  • CCCC L3-032 关于深度优先搜索和逆序对的题应该不会很难吧这件事 【树状数组】
    https://pintia.cn/problem-sets/994805046380707840/exam/problems/1518582895035215872题意给你一棵树,给定树根,要求树的所有结点编号的dfs序中逆序对的数量总和,对结果......
  • Acwing 788.逆序对的数量
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e+5;inta[N],tmp[N];typedeflonglongll;#注意题目条件llmerge_sort(intq[],intl,intr){......
  • 【luogu P6130】随机红包(数学)(期望)
    随机红包题目链接:luoguP6130题目大意把一个数1分成n份,求第k小的期望大小,多次询问。思路首先考虑最小的期望大小,那假设最小的是\(x\),剩下的都大于\(x\)。那......
  • AcWing107 超快速排序(树状数组找逆序对)
    原题链接思路求到底要和相邻元素交换几次,其实就是求逆序对的数量,有几对逆序对就要交换几次,因为只能相邻的之间交换(超快速排序?冒泡排序!)利用树状数组求逆序对大概想法......
  • Luogu 2894 酒店Hotel
    题目链接:​​传送门​​题目描述:参考样例,第一行输入n(1≤n≤50,000),m(1≤M<50,000),n代表有n个房间,编号为1—n,开始都为空房,m表示以下有m行操作,以下每行先输入一个......
  • Luogu 3478 [POI2008]STA-Station
    题目链接:​​传送门​​题目描述给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大输入样例814564567682434输出样例7一句话题意好......
  • Luogu 1507 NASA的食物计划
    题目链接:​​传送门​​题目背景NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以......
  • Luogu 1853 投资的最大效益
    题目链接:​​传送门​​题目背景约翰先生获得了一大笔遗产,他暂时还用不上这一笔钱,他决定进行投资以获得更大的效益。银行工作人员向他提供了多种债券,每一种债券都能在固定的......