<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      題目鏈接:

      https://www.luogu.com.cn/problem/P1908

      題目大意:

      給長為 n 的序列,求序列中逆序對的數目

      思路:

      一、
      歸并:

      #include <bits/stdc++.h>
      using namespace std;
      #define LL long long
      const int N = 5e5 + 10;
      LL a[N], tmp[N], n, ans = 0;
      void mergeSort(LL l, LL r){
      	if (l >= r) return;
      	LL mid = (l + r) >> 1, i = l, j = mid + 1, cnt = 0;
      	mergeSort(l, mid);
      	mergeSort(mid + 1, r);
      	while (i <= mid || j <= r)
      		if (j > r || (i <= mid && a[i] <= a[j]))
      			tmp[cnt++] = a[i++];
      		else
      			tmp[cnt++] = a[j++], ans += mid - i + 1;
      	for (LL k = 0; k < r - l + 1; k++)
      		a[l + k] = tmp[k];
      }
      int main(){
      	cin >> n;
      	for (int i = 1; i <= n; i++)
      		scanf("%lld", &a[i]);
      	mergeSort(1, n);
      	cout << ans << "\n";
      	return 0;
      }
      

      二、
      樹狀數組:

      #include <bits/stdc++.h>
      using namespace std;
      using LL = long long;
      struct fwt{
      	int n;
      	vector <int> a;
      	fwt(int n) : n(n), a(n + 1) {}
      	LL sum(int x){
      		LL res = 0;
      		for (; x; x -= x & -x)
      			res += a[x];
      		return res;
      	}
      	void add(int x, LL k){
      		for (; x <= n; x += x & -x)
      			a[x] += k;
      	}
      	LL query(int x, int y){
      		return sum(y) - sum(x - 1);
      	}
      };
      int main(){
      	ios::sync_with_stdio(false);cin.tie(0);
      	int n;
      	cin >> n;
      	vector<int> a(n);
      	for (int i = 0; i < n; i ++ ){
      		cin >> a[i];
      	}
      	auto b = a;
      	sort(b.begin(), b.end());
      	b.erase(unique(b.begin(), b.end()), b.end());
      	for (int i = 0; i < n; i ++ ){
      		int t = lower_bound(b.begin(), b.end(), a[i]) - b.begin() + 1;
      		a[i] = t;
      	}
      	fwt f(n);
      	LL ans = 0;
      	for (int i = n - 1; i >= 0; i -- ){
      		ans += f.query(1, a[i] - 1);
      		f.add(a[i], 1);
      	}
      	cout << ans << "\n";
      	return 0;
      }
      
      posted on 2022-01-13 16:31  Hamine  閱讀(47)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 宁城县| 人妻蜜臀久久av不卡| 久久综合色之久久综合色| 99精品国产在热久久婷婷| 9色国产深夜内射| 亚洲丰满老熟女激情av| 最近2019免费中文字幕8| 中国少妇无码专区| 国产a在视频线精品视频下载| av日韩精品在线播放| 久久久国产成人一区二区| 久久综合亚洲色一区二区三区| 日韩精品一区二区三区在线观看| 色悠悠国产精品免费在线| 午夜在线观看成人av| 公喝错春药让我高潮| 国产激情一区二区三区不卡| 亚洲性无码av在线| 欧美一区二区三区激情| 蜜桃视频在线观看网站免费| 国产极品美女高潮无套| 精品亚洲女同一区二区| 嵊泗县| 亚洲精品乱码久久久久久中文字幕| 免费VA国产高清大片在线| 亚洲精品亚洲人成人网| 亚洲日本韩国欧美云霸高清| 狠狠躁夜夜躁人人爽天天5| 蜜臀91精品高清国产福利| 久久被窝亚洲精品爽爽爽| 日韩精品中文字幕人妻| 午夜国产小视频| 欧美性69式xxxx护士| 强奷白丝美女在线观看| 亚洲中文字幕日产无码成人片| 97午夜理论电影影院| 国产熟女肥臀精品国产馆乱 | 九九热免费在线视频观看| 丁香婷婷激情俺也去俺来也 | 国产熟睡乱子伦视频在线播放| 亚洲一级片一区二区三区|