"Link" 对于一个交换后的序列$b_i$,其最小交换次数为每个数在原序列的位置构成的排列$p_i$的逆序对数。 那么从小到大枚举每个数,把它删掉,它对答案的贡献就是剩下的数和它形成的逆序对数。 因此我们可以用BIT维护,注意枚举时要把相同的数同时处理。 ...
分类:
其他好文 时间:
2020-02-08 23:19:34
阅读次数:
113
[CQOI2011]动态逆序对(luogu) 题目描述 对于序列 aa,它的逆序对数定义为集合 \{(i,j)| i<j \wedge a_i > a_j \}{(i,j)∣i<j∧ai?>aj?} 中的元素个数。 现在给出 1\sim n1~n 的一个排列,按照某种顺序依次删除 mm 个元素,你的 ...
分类:
编程语言 时间:
2020-02-06 19:38:09
阅读次数:
77
树状数组 略 求一个数组$A_1,A_2……A_n$的逆序对数(树状数组做 $n ≤ 100000, |A_i| ≤ 10^9$ 我们将$A_1, ..., A_n$按照大小关系变成$1...n$.这样数字的大小范围在$[1, n]$中.(离散化) 从左往右动态维护一个数组$B_i$,表示扫描到当前 ...
分类:
编程语言 时间:
2020-02-02 23:46:20
阅读次数:
80
由于交换是相邻交换,所以分为两类:1.左右区间内部交换,那么一定会让逆序对数量$\pm 1$,也就是说如果没有左右区间之间交换,那么答案就是$|ansL-ansR|$(ans表示逆序对数量)2.左右区间之间交换,考虑枚举左边最终有多少个1,不妨假设比原来多(原来少一样,但不能都异或1之后重复一遍,会 ...
分类:
其他好文 时间:
2020-01-26 19:23:45
阅读次数:
67
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,siz ...
分类:
编程语言 时间:
2019-12-18 21:34:27
阅读次数:
87
1. 分治算法 分治算法的核心就是 分而治之 ,也就是将原问题划分为若干个规模更小但结构与原问题相似的子问题,递归地解决这些子问题然后进行合并,就可以得到原问题的解。比如归并排序就是将原数据划分为左右两个部分,然后分别递归对左右两部分排序,排完序后再合并两个有序区间数据即可得到最终整体有序的数据。 ...
分类:
编程语言 时间:
2019-12-03 23:19:52
阅读次数:
139
题目描述 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。 输入格式 输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间 ...
分类:
其他好文 时间:
2019-11-30 20:52:03
阅读次数:
88
设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x(如a[left])对a[left]~a[right]进 ...
分类:
其他好文 时间:
2019-10-28 23:49:59
阅读次数:
175
13 成都 easy: FHJ medium easy: ABDG medium: C medium hard: E A 将 n 个点围成一个权值和模 3 等于 0 的环,在 $u, v$ 两点之间可以添加权重与在环上 $u,v$ 距离模 3 同余的边。这样可以证明,任意回路边权之和模 3 等于 0 ...
分类:
其他好文 时间:
2019-10-23 19:55:28
阅读次数:
99
T1 Permut 题意: 求$1 n$的排列中逆序对数量为$k$的排列的个数 SOL: ~~排除法我们知道一定不是$O(n!)$的算法~~ 考虑$dp$,现在已经有$n 1$的答案了,考虑新加入一个数产生多少新的逆序对 设$dp[i][j]$表示$1 i$的排列有$j$个逆序对的数量,考虑新加入的 ...
分类:
其他好文 时间:
2019-10-04 13:22:22
阅读次数:
156