本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 思路 如果遍历数组,对每个数字都和后面的数字比较大小,时间复杂度为O( ...
分类:
编程语言 时间:
2018-11-14 10:19:38
阅读次数:
139
link 我们可以很容易的推断出$-1$是单调不降的,若$i>j$且$a_i$与$a_j$都没有填数,若填完之后$a_i>a_j$或者$a_i<a_j$,则对答案产生影响的只在$[i,j]$之间,则$a_i<a_j$对答案产生的贡献更小,则其实每个不同位置的$-1$其实是互不影响的,所以就可以用$d ...
分类:
其他好文 时间:
2018-11-05 11:13:09
阅读次数:
198
题意 给你一个长为$n$的序列,进行$m$次操作,每次对一个区间进行排序,求最后的序列$(n a[i+1]$这个逆序对 这样子交换最多有$n^2$次 那么我们可以用一个数据结构模拟冒泡排序交换逆序对这个过程 用一个$set$维护所有逆序对的位置 每次暴力删除区间内所有逆序对 再把新产生的逆序对加入$ ...
分类:
编程语言 时间:
2018-11-04 15:34:04
阅读次数:
219
计数难题3:LuoguT46780 妹子序列 标签(空格分隔): 计数难题题选 题目大意: 丢个网址: "戳我(QwQ)" 给定$n$、$m$。 求$n$的所有排列中,逆序对个数为$m$的排列个数。数据范围:$n,m\leq 10^5$ 。 题解 朴素$dp$:$dp_{i,j}$表示放完$i$,有 ...
分类:
其他好文 时间:
2018-11-04 14:23:45
阅读次数:
184
又是一道树状数组求逆序对的题目。 这一题我们可以将第二个串中的每一个字母,与第一个串中的字母做两两匹配,令第二个串第i个字母的值id[i]为该字母与第一个串中的字母匹配到的位置。 然后考虑到所求答案为最小的移动次数,那么这个最小的移动次数显然为序列id的逆序对个数。 树状数组求一求就没了。 我一看时 ...
分类:
编程语言 时间:
2018-11-03 23:13:21
阅读次数:
200
"CF258D Little Elephant and Broken Sorting" 题意 题意翻译 有一个$1\sim n$的排列,会进行$m$次操作,操作为交换$a,b$。每次操作都有$50\%$的概率进行。 求进行$m$次操作以后的期望逆序对个数。 $n,m\le 1000$ 输入输出格式 ...
分类:
其他好文 时间:
2018-11-03 02:26:09
阅读次数:
278
求逆序对个数的三种方法 逆序对: 对于一个序列 $a_1$,$a_2$,$a_3$..$a_n$,如果存在$a_i$ $a_j$且i using namespace std; const int maxn=1e6+10; template void read(T&res) { char ch=get ...
分类:
编程语言 时间:
2018-11-02 23:49:57
阅读次数:
224
如果是搜索的话,不好记录逆序对的个数,其实无论怎样,逆序对的个数都不好计算 f[i][j]表示插完了第i个数,逆序对数是几 ...
分类:
其他好文 时间:
2018-11-02 23:44:32
阅读次数:
281
P2513 [HAOI2009]逆序对数列 题目描述 对于一个数列{ai},如果有iaj,那么我们称ai与aj为一对逆序对数。若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数。那么逆序对数为k的这样自然数数列到底有多少个? 错误日志: 没想対, 菜是原罪, 最近状态不佳 Sol ...
分类:
其他好文 时间:
2018-10-27 14:58:57
阅读次数:
140
题意:用如下方法生成一个超长序列:维护一个元素为序列的栈,操作有三种,1.push一个仅含一个数字的序列;2.将栈顶的两个序列合并;3.将栈顶序列重复$k$次后作为新的栈顶,保证操作完后栈中只有一个序列,求这个序列的逆序对数 直接维护整个序列肯定MLE+TLE,考虑只维护一些关键的值,对序列$S$, ...
分类:
其他好文 时间:
2018-10-27 10:26:52
阅读次数:
189