模板题,树状数组加上离散化求逆序对。 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 const int N=5e5+10; 5 int n,a[N],b[N],c[N]; 6 LL ans; 7 8 int lowbit(int x){ 9 return x&(-x); 10 } 11 12 void ins(int x){ 13 whil
import java.io.InputStreamReader;import java.util.Scanner; public class Main { static long result=0; public static void merge_sort(int q[],int l,int r) { if(l>=r) { return; } int mid=l+r>>1; int k=0;int[] temp=new int[r-l
#include <bits/stdc++.h> #define LL long long using namespace std; const int N = 5e5 + 10; int n, m, len; LL ans; int a[N], num[N]; struct node { int l, r; int cnt; }tr[N * 4]; int find(int x) { return lower_bound(num + 1, num + 1 + len,
#include <bits/stdc++.h> using namespace std; const int N = 1e8; long long q[N]; long long ans = 0; long long tmp[N]; void merge_sort(long long q[], int l, int r) { if(l >= r) return; int mid = l + r >> 1; merge_sort(q,
P1908 求逆序对,注意可能有重复数字,排序的时候要注意,否则会wa C[x]表示1-x中已经有的数字数量 数组C中存的是正序对,所以每次操作要sum += i - sum(node[i].index),这样才是逆序对 时间复杂度O(nlogn) // Decline is inevitable, // Romance will last forever. // P19
P1908 逆序对 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 树状数组可以干这个事情 树桩数组维护一个下标啦 然后离散化一下,sort,unique,二分确定每一个数在新序列的下标 也就是第i个数大小的排名。 然后算一下有多少个数,拍在他前面且大小排名在它之前。 #include<iostream> #inc
洛谷-P1908 逆序对 原题链接:https://www.luogu.com.cn/problem/P1908 题目描述 输入格式 输出格式 输入输出样例 说明/提示 C++代码 题目描述 猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。 最近,TOM
题目 https://www.luogu.com.cn/problem/P1908 题目分析 树状数组的使用原因 可以开一个数组c[maxn],来记录前面数据的出现情况,初始化为0;当数据a出现时,就令c[a]=1。这样的话,欲求某个数a的逆序数,只需要算出在当前状态下c[a+1,maxn]中有多少个1,因为这些位置的数在a之前出现且比a大
当ai < 105的时候 1.树状数组向上修改,向下查询(即传统方法)。 逆向枚举每一个数,先查询已经插入树状数组中比他小的元素的个数,累加ans;然后再把这个数加入到树状数组。 for(i=n;i>=1;i--) { ans+=getsum(a[i]-1); fix(a[i]); } 代码如下 #include<cstdio> int a[500007],e
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define _for(i,a,b) for(int i = (a);i < b;i ++) 4 const int maxn = 500009; 5 typedef long long ll; 6 int n; 7 ll a[maxn],c[maxn]; 8 ll ans = 0; 9 inline ll read()10 {11 ll ans = 0;12 ch
题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就