sub

Posted lcan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sub相关的知识,希望对你有一定的参考价值。

技术分享图片

 

求逆序对是枚举一个数,统计前面有多少数小于它

这个用乘法原理,统计左右小于或大于它的

要用树状数组,但数太大数组开不下,要离散化

技术分享图片

A[0]存储的是是0的数有多少个

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 typedef long long ll;
 5 const ll mod = 1e9 + 7;
 6 int n;
 7 int tmp[200005], a[200005];
 8 int bit1[200005], bit2[200005];
 9 
10 inline int lowbit(int x){
11     return x & -x;
12 }
13 
14 void add(int *bit, int pos, int v){
15     for(int i = pos; i <= n; i += lowbit(i)){
16         bit[i] += v;
17     }
18 }
19 int query(int *bit, int pos){
20     int ret = 0;
21     for(int i = pos; i; i -= lowbit(i)){
22         ret += bit[i];
23     }
24     return ret;
25 }
26 ll ans = 0;
27 int main(){
28     scanf("%d", &n);
29     for(int i = 1; i <= n; i ++){
30         scanf("%d", &a[i]); tmp[i] = a[i];
31     }
32     sort(tmp + 1, tmp + n + 1);
33     for(int i = 1; i <= n; i ++){
34         a[i] = lower_bound(tmp + 1, tmp + n + 1, a[i]) - tmp;
35         add(bit2, a[i], 1);
36     }
37     for(int i = 1; i <= n; i ++){
38         add(bit2, a[i], -1);
39         ans = (ans + 1ll * query(bit1, a[i] - 1) * (query(bit2, n) - query(bit2, a[i]))) % mod;
40         ans = (ans + 1ll * query(bit2, a[i] - 1) * (query(bit1, n) - query(bit1, a[i]))) % mod;
41         add(bit1, a[i], 1); 
42     }
43     printf("%lld
", ans);
44     return 0;
45 }

 

以上是关于sub的主要内容,如果未能解决你的问题,请参考以下文章

Unity Shader入门精要学习笔记 - 第5章 开始 Unity Shader 学习之旅

Access 新手如何运行没有 Sub 的 VBA 代码?

VB的sub和function的区别?

系统管理之组织机构树形化结构优化篇

代码已编译并成功运行但预期输出为打印“Sub”未打印。这段代码中的错误是什么?

微信小程序代码片段