摘要:
###例题 原题链接:https://www.acwing.com/problem/content/790/ 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。 阅读全文
###例题 原题链接:https://www.acwing.com/problem/content/790/ 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。 阅读全文
posted @ 2022-08-02 08:43
Zilliax
阅读(50)
评论(0)
推荐(0)

###概念 区间合并就是将若干个有交集的区间合成一个大区间 ###思路 将每个区间按照左右端点成对存储,并排序,以区间左端点从小到大排序,如果下一个区间的左端点大于当前区间的右端点说明这两个区间不能合并; 同时因为sort后,如果下一个区间的开头大于当前区间的末尾,那么当前区间就可以直接存入结果当中
###理解 离散化本质上是一种特殊的哈希,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。 简单来说,就是在不改变数据的相对大小的情况下,对数据进行一定的缩小。 例如 还有 以上数据很容易发现离散化的用途,当你所需要的数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行
###理解 双指针基本只涉及到两种指针,一种是快慢指针,一种是对撞指针; 快慢指针主要解决有关链表一类的问题,如链表里是否有环,环状链表的长度等;而对撞指针一般解决二分等问题; 快慢指针一般是设计一个快指针和一个慢指针,一开始都指向链表的开头;而对撞指针一般是设计一头一尾两个速度相等的指针,最终会相
###前缀和_理解 前缀和就是数学里的数列的前n项和Sn,所以前缀和需要从最开始的元素开始相加。 ###前缀和_思路 1.创建一个s[n]数组,则s[i]表示前i项数组的和; 2.建议在输入a[n]数组时,就同时处理S[n]数组; 3.S[i] = S[i - 1] + a[i]; ###前缀和_使
###定位 Java和Python不用; 高精度在面试中不常考,但是在笔试容易出; 加减要求位数在1e6; 乘法大的那个数位数要小于1e6,小的数要小于1e9或1万; 除法和大乘大就有点变态了; ###高精度加法 本质上就是人类使用的加法用计算机表示,每个数字用数组存储 #include<iostr
###基本思路 建议排列之后再使用,每次找取中间值,若中间值大于我想要的,直接把右边的丢掉;若中间值小于我想要的,那就把左边的丢掉。 ###具体步骤 1.建议排列之后再使用,设置一个l,一个r分别为左右边界; 2.若mid = (l + r) / 2,用于寻找数组中第一个满足条件的数字,则check
###冒泡排序 1.虽然容易理解,但是容易TLE; 2.冒泡排序就是每次排序至少能将一个数放在它应该出现的位置,所以如果有n个元素,则需要n-1次排序; ###冒泡排序_代码模板 #include<bits/stdc++.h> using namespace std; int n; int arr[
比赛题目链接 https://codeforces.com/contest/1670 My contest submissions 比赛时只搞定了三题,D题算是大爆种(我也就只能欺负欺负枚举找规律的题) A.Prof. Slim(思维) 题意 给出一个序列,可以移动每个字符前的正负符号,问能否通过这
比赛题目链接 https://codeforces.com/contest/1675 A.Food for Animals(模拟) 题意 有a份狗粮,b份猫粮,c份万能粮,问是否能够满足所有x条狗和y只猫 分析 先检视x条的狗能不能把a份狗粮吃掉,若吃完了狗粮,就再去吃c份通用的,一旦通用变为负数,
浙公网安备 33010602011771号