当前位置: 首页 > news >正文

归并分治模板

翻转对

class Solution {
public:int findpairs(vector<int> &nums, int l, int r) {int mid = (l + r) >> 1;int i = l, j = mid + 1;int res = 0;for (; i <= mid; ++i) {while (j <= r && (1LL * nums[i] > 2LL * nums[j])) {res += mid - i + 1;++j;}}return res;}int merge(vector<int> &nums, int nums2[], int l, int r) {if (l >= r) return 0;int res = 0;int mid = (l + r) >> 1;res = merge(nums, nums2, l, mid) + merge(nums, nums2, mid + 1, r) + findpairs(nums, l, r);int i = l, j = mid + 1;int id = l;while (i <= mid && j <= r ) {if (nums[i] <= nums[j]) nums2[id++] = nums[i++];else nums2[id++] = nums[j++];}while (i <= mid) nums2[id++] = nums[i++];while (j <= r) nums2[id++] = nums[j++];for(int ind = l;ind <= r;ind++) nums[ind] = nums2[ind];return res;}int reversePairs(vector<int>& nums) {int n = nums.size();int nums2[n];if (n == 0) return 0;return merge(nums, nums2, 0, n - 1);}
};

小和问题

#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
#define ll long longint a[maxn];
int b[maxn];ll find(int a[], int l, int r) {if (l == r) return 0;int mid = (l + r) >> 1;int i = l, j = mid + 1;ll res = 0;for (; j <= r; ++j) {while (i <= mid && a[i] <= a[j]) {res += 1LL * (r - j + 1) * a[i];i++;}}return res;
}ll merge(int a[], int b[], int l, int r) {if (l >= r) return 0;int mid = (l + r) >> 1;int i = l, j = mid + 1, k = l;ll res = merge(a, b, l, mid) + merge(a, b, mid + 1, r) + find(a, l, r);while (i <= mid && j <= r) {if (a[i] <= a[j]) b[k++] = a[i++];else b[k++] = a[j++];}while (i <= mid) b[k++] = a[i++];while (j <= r) b[k++] = a[j++];for (int i = l; i < k; ++i) a[i] = b[i];return res;
}int main() {int n;cin >> n;for (int i = 0; i < n; ++i) cin >> a[i];cout << merge(a, b, 0, n - 1);return 0;
}
http://www.gsyq.cn/news/75864.html

相关文章:

  • 街头徒手健身4高阶引体向上
  • shell脚本内使用alias
  • 告别手动编码:如何用Screenshot-to-code搭建设计稿自动转HTML全流程
  • Helloworld
  • ffmpeg移植到arm
  • 英语_阅读_songs playlists_待读
  • JavaScript 转换(转译)工具———babel
  • 12.1~12.7
  • go net/http 学习笔记
  • 《Linux框架编程之环境导论》【冯诺依曼体系结构 + 操作系统基本概述】
  • 线圈生成工具
  • 微软Copilot新增持续监听与视觉分析功能
  • AI终端狂想曲:风口、泡沫与我们的未来
  • 关于自组nas 或者OpenWrt 2.5G网口 未能满速的原因
  • 文本文档处理工具
  • 串口通信工具
  • 分形电路生成工具
  • vue笔记一
  • 深入解析:⚡️2025-11-08GitHub日榜Top5|AI黑客代理安全测试工具
  • 详细介绍:接口自动化测试框架详解(pytest+allure+aiohttp+ 用例自动生成)
  • P9174 [COCI 2022/2023 #4] Bojanje
  • PCB文档处理工具
  • Manim架构解释
  • P10190 [USACO24FEB] Target Practice II S
  • 仿生手的混合结构设计与神经形态触觉传感
  • AI语料优化新势力:助力企业抢占智能时代先机的优质服务商推荐
  • P10779 BZOJ4316 小 C 的独立集
  • P2475 [SCOI2008] 斜堆
  • P4037 [JSOI2008] 魔兽地图
  • 李宏毅机器学习笔记41 - 实践