#include<cstdio> #include<algorithm> const int N = 1e6 + 1; int n, t[N]; namespace lsh{ int lsh[N], tmp[N]; void init() { for (int i = 1; i <= n; ++i) ...
分类:
编程语言 时间:
2021-04-10 13:40:10
阅读次数:
0
现在还不是很懂cdq分治是啥。 我对它的理解大概就是一种分治方法 / 思想。 这个方法有一些限制:[区间L] < [区间R](需要对整个数组sort一遍) 这个方法可以做到:用来解决各种区间段转移问题[x->y(x<y)]的,比如,求逆序对数。(本质上就是计算左区间对右区间的贡献) 拓展:将修改转化 ...
分类:
其他好文 时间:
2020-11-17 12:14:02
阅读次数:
6
这里放一些我参加过的考试题和比赛题中没想出来的题(所以可能不仅仅是毒瘤的思维题,还有可能有简单的思维题以及窜进来的数学数据结构之类的题)。 可能会有一少部分的平时的练习题。 CF351E Jeff and Permutation 给出数组 \(a\) ,你可以改变每个数的正负,求逆序对数最少是多少。 ...
分类:
其他好文 时间:
2020-11-11 16:36:12
阅读次数:
8
逆序对目前我所知的有三种解法 首先是最简单的冒泡排序,当每次前面一个数比后面一个数大时就会交换,因此可以用冒泡排序来求逆序对 代码: #include<bits/stdc++.h> using namespace std; int main(){ int n,sum=0; cin>>n; int a ...
分类:
其他好文 时间:
2020-07-14 21:51:19
阅读次数:
65
Part 1:CDQ分治 CDQ分治讲解博客 可以把CDQ分治理解为类似与归并排序求逆序对个数的一种分治算法(至少我现在是这么想的)。先处理完左右两边各自对答案的贡献,在处理跨越左右两边的对答案的贡献。 例题: 逆序对(二维偏序) 过水,不讲。 三维偏序 第一维先sort,第二维由归并保证,第三维在 ...
分类:
其他好文 时间:
2020-07-14 15:08:47
阅读次数:
90
题目 思路 很明显的求逆序对 可以用归并排序 可以用树状数组 树状数组记得加离散化! 代码 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; long long n; int c[maxn]; void add(i ...
分类:
编程语言 时间:
2020-07-06 17:47:37
阅读次数:
43
求——逆 序 对 Part 0:作者前言(废话) 以前其实早就学过用二路归并排序的方法求序列的逆序对,因为一直没有学会二路归并,所以逆序对一直不会做 前几天学了线段树,然后无意间在书上看到了“线段树求逆序对”这样的问题…… 于是果断魔改一发线段树求一手逆序对。。。然后就有了这个博客 另外,祝贺我考试 ...
分类:
其他好文 时间:
2020-07-05 17:33:56
阅读次数:
68
题目 Description 给定一个序列a1,a2,…,an,如果存在i<j,a[i]>a[j],那么我们称之为逆序对,求逆序对的数目 Input 第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。 N<=10^5。Ai<=10^5 Output 两行,第一行为所有逆序对总数 ...
分类:
其他好文 时间:
2020-06-25 21:50:26
阅读次数:
76
求逆序对 描述 给定一个序列a1,a2,…,an,如果存在iaj,那么我们称之为逆序对,求逆序对的数目 输入 第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。 N<=10^5。Ai<=10^5 输出 两行,第一行为所有逆序对总数,第二行为本质不同的逆序对总数。 输入 4 3 ...
分类:
编程语言 时间:
2020-06-25 13:37:59
阅读次数:
64
题目链接:https://www.luogu.com.cn/problem/P3608 方法一 用树状数组求逆序对先后扫两遍,一次从前往后,一次从后往前,算出每头奶牛左右两边比她高的数量。 最后统计一下。 #include <bits/stdc++.h> using namespace std; i ...
分类:
其他好文 时间:
2020-06-25 11:56:09
阅读次数:
47