2 solutions
- 
  5猿生体节 有彩蛋 oi , 50 分的人看过来 题意逆序对个数 在学排序的时候学了 但是现在要用树状数组 思路待写... 代码不开 long long 见祖宗(50分) #include<bits/stdc++.h> #define int long long using namespace std; int n,l,sum=0; int a[500005]; int b[500005]; void add(int x,int k) { for(;x<=l;x+=x&-x) b[x]+=k; } int ask(int x) { int ans=0; for(;x;x-=x&-x) ans+=b[x]; return ans; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) b[i]=a[i]; sort(b+1,b+1+n); l=unique(b+1,b+1+n)-(b+1); for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+1+l,a[i])-b; memset(b,0,sizeof b); for(int i=n;i>=1;i--) { sum+=ask(a[i]-1); add(a[i],1); } cout<<sum; return 0; }彩蛋吕泽楷传奇输入m 
- 
  2题意输出对于 ,满足 的个数。 思路其实找逆序对相当于把数组反过来然后找正序对。 然后我们每遇到一个数,先将总个数加上比 小的数的个数之和( sum += c.query(a[i] - 1), 是树状数组),再将桶数组 。但是我们发现输入的数的范围高达 ,所以我们要离散化一下。这里离散化后用不到原数组了,所以可以覆盖原数组 代码#include <bits/stdc++.h> using namespace std; template<typename tp> class BIT{ private: size_t n; vector<tp> c; size_t lowbit(size_t x){ return x & -x; } public: BIT(size_t n){ this->n = n; c = vector<tp>(n); } BIT(vector<tp> a){ n = a.size(); for (size_t i = 1;i <= n;i++){ add(i,a[i]); } } BIT(tp *a,size_t n){ this->n = n; for (size_t i = 1;i <= n;i++){ add(i,a[i]); } } BIT(BIT<tp> &a){ n = a.size(); c = a; } size_t size(){ return n; } void add(size_t i,tp val){ for (;i <= n;i += lowbit(i)) c[i] += val; } tp query(size_t r){ tp res = 0; for (;r;r -= lowbit(r)) res += c[r]; return res; } tp query(size_t l,size_t r){ return query(r) - query(l - 1); } }; typedef long long ll; const int N = 5e5 + 5; int a[N],b[N]; ll sum; BIT<ll> c(N); int main(int argc, char **argv){ int n; cin >> n; for (int i = 1;i <= n;i++){ cin >> a[i]; b[i] = a[i]; } sort(b + 1,b + n + 1); int m = unique(b + 1,b + n + 1) - b; for (int i = 1;i <= n;i++){ a[i] = lower_bound(b + 1,b + m,a[i]) - b; } for (int i = n;i > 0;i--){ sum += c.query(a[i] - 1); // 减 1 是因为不把 a[i] 包括进去(a[i] > a[j]) c.add(a[i],1); } cout << sum; return 0; }
- 1
Information
- ID
- 276
- Time
- 1000ms
- Memory
- 1024MiB
- Difficulty
- 7
- Tags
- # Submissions
- 49
- Accepted
- 13
- Uploaded By
 
       C23panweiming
      
                      LV 6
                    
 @ 2024-12-4 13:58:26
    
          C23panweiming
      
                      LV 6
                    
 @ 2024-12-4 13:58:26
        