- 2024-07-31P2804 神秘数字
Abstract传送门给出一个序列,要求我们找出平均值大于m的子段的数量。这题和逆序对还有些关系呢。Idea很容易想到,我们要对原序列进行以下预处理:a[i]-=m,这样一来,问题转变为找和值大于0的子段,那么我们再对原序列做一次前缀和,接下来,对于区间[l,r],若a[r]-a[l-1]>0,则
- 2024-07-12分治
快速排序每次找一个基准值,比基准值小的放左边,比基准值大的放右边,在分别对左右排序标准代码:voidwork(intl,intr){ if(l>=r)return; intmid=(l+r)/2; mid=a[mid]; intx=l,y=r; while(x<=y) { while(a[x]<mid)x++; while(a[y]>mid)y--;
- 2024-07-06暑假第四天
7月5日今天完成了二路归并排序,下面是我的源代码#include<iostream>usingnamespacestd;intn;int*a;//定义为指针,用于动态分配内存voidMerge(inta[],intt[],intlow,intmid,inthigh){inti=low,j=mid+1,k=low;while(i<=mid&&j<=high)
- 2024-01-25排序
排序1.快速排序#include<bits/stdc++.h>usingnamespacestd;intn;inta[100001];voidqsort(intl,intr){if(l>=r)return;inti=l,j=r,x=a[l];while(i<j){ while(i<j&&a[j]>=x)j--;//从右向左找第一个小于x的数if(i&l
- 2024-01-24逆序对/归并排序
逆序对定义:对于给定的一段正整数序列,逆序对就是序列中$a_i>a_j$且$i<j$的有序对。P1908逆序对-洛谷|计算机科学教育新生态(luogu.com.cn)#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=2e6+10;intn,m,a[N],c[N],res,num;void
- 2023-10-09关于归并排序求逆序对
之前写了一篇blog讲如何用归并排序求逆序对以及解决相关问题。最近才发现自己根本没搞懂,而且写的不好。遂重写。前言:什么是逆序对?对于数列的第i个和第j个元素,若满足i<j且a[i]>a[j],则其为一个逆序对。归并排序的过程:将序列分为两部分,先递归将两侧序列排序,后将两
- 2023-07-30归并排序
求逆序对我用的是归并排序直接上我在洛谷里做的那道逆序对的题目的归并排序主要代码吧1voidmsort(intl,intr){2if(l>=r)return;3intmid=(l+r)>>1;4msort(l,mid);5msort(mid+1,r);6inti=l,j=mid+1,k=l;7
- 2023-07-16复习-基础课-基础算法
1.快速排序:不稳定,其他略。2.归并排序:稳定,常用于求逆序对。voidmsort(intl,intr){if(l>=r)return;intmid=(l+r)>>1;msort(l,mid);msort(mid+1,r);//递归排序intk=0;inti=l,j=mid+1;while(i<=mid&&j<=
- 2023-02-14P1177 【模板】快速排序
P1177【模板】快速排序快速排序模板1#include<iostream>2#include<cstring>3usingnamespacestd;4inta[100010],n;5intt[100010];6voidmsort(in
- 2023-02-08msort_special:逆序对||归并排序
逆序对:一句话题解:改进归并排序,当出现a[i]>=a[j]时,由于已经是两个有序数列,则i前所有的数字都能与a[j]组成逆序对,即使其在出现a[i]>=a[j]时ans+=mid-i+1代码:#include<bit
- 2022-11-19逆序对
今天来水一道题目,名字叫逆序对.主要是复习一下归并排序的写法.Code#include<bits/stdc++.h>usingnamespacestd;#defineMAXN500005#defineF(i,a,b)for(int
- 2022-11-14归并排序
基本思想:通过分块治理,现将分开的部分变得有序,再来进行合并,称为归并排序。二路归并:通过将待排序咧分成两部分进行归并排序,称为二路归并排序。将每个元素拆分成大小为1的分