• 2024-04-09E. Long Inversions
    原题链接题解巧妙模拟题这种题目要从性质下手1.把翻转的区间实质化,我们可以发现序列中值为1的地方覆盖了偶数个区间,0的地方覆盖率奇数个区间,换句话说,如果1的地方覆盖区间个数为奇数,那么我们要新建立一个以它为起点的区间怎么模拟呢?我们维护一个到当前点的距离小于等
  • 2024-04-05归并排序 返回逆序数 python
    defmerge_sort_and_count_inversions(arr):n=len(arr)ifn<=1:returnarr,0#如果n小于等于1,数组已经有序,直接返回数组本身和逆序数0mid=n//2left_lst,inv_left=merge_sort_and_count_inversions(arr[:mid])#对左半部分进行递
  • 2024-03-05CodeForces 1540D Inverse Inversions
    洛谷传送门CF传送门小清新题。首先容易发现每个合法的\(b\)唯一对应一个排列,大概就是每个时刻排列元素的相对顺序,然后插入到相应的位置。但是这样太麻烦了。发现题目只要求求单点的\(p\)值。这应该有更简单的方法。考虑令\(b_i\getsi-b_i\)表示\(p_i\)在前缀\(
  • 2024-02-28B. Minimize Inversions
    原题链接题解逆序对数最小的排列是严格升序的排列,因此我猜想有一个严格升序的排列最优的证明;冒泡排序,我们把排列a中最大的元素不断地往右作相邻对换,这样一来,序列a的逆序对数必定减少一,序列b的逆序对数可能减少一,可能不变,可能加一,但是两个排列的总逆序对数不可能增加。然后再
  • 2024-02-20Minimize Inversions
    先来看看官方题解的做法,他一反常态的没有在逆序对题目里面考虑每个位置的贡献,而是直接回到定义考虑每对数是否是逆序对我们考虑原数列中任意的一组数\((a_i,a_j)\)和\((b_i,b_j)\)。如果最开始两个都不是逆序对,那么交换之后两个都是逆序对;如果最开始两个都是逆序对,那么交换之后两
  • 2023-12-26D. Yet Another Inversions Problem
    D.YetAnotherInversionsProblemYouaregivenapermutation$p_0,p_1,\ldots,p_{n-1}$ofoddintegersfrom$1$to$2n-1$andapermutation$q_0,q_1,\ldots,q_{k-1}$ofintegersfrom$0$to$k-1$.Anarray$a_0,a_1,\ldots,a_{nk-1}$oflength$n
  • 2023-09-20AtCoder Grand Contest 023 E Inversions
    洛谷传送门AtCoder传送门首先将\(a\)从小到大排序,设\(p_i\)为排序后的\(a_i\)位于原序列第\(p_i\)个位置,\(x_i\)为要填的排列的第\(i\)个数。设\(A=\prod\limits_{i=1}^n(a_i-i+1)\),则\(A\)为排列的总方案数(考虑按\(a_i\)从小到大填即得)。套路地,统
  • 2023-07-17题解 P5426 [USACO19OPEN]Balancing Inversions G
    来一篇简单易懂的良心题解。由于数值不是\(0\)就是\(1\),我们可以考虑将逆序对的统计方式化简。以左区间为例,设\(x\)为\(1\)的个数,\(p_i\)为第\(i\)个\(1\)的坐标,则逆序对个数为\(\sum\limits_{i=1}^{x}n-p_i-(x-i)\)。也就是\((n-x)\cdotx+\frac{x\cdot(x+1)}{
  • 2023-06-29CF1637H Minimize Inversions Number
    我直接??????????????????考虑一个数怎么做,就是逆序对减去一个\(i\)前面的逆序对再加上顺序对。考虑很多数怎么做,就是这个玩意的和再加上子序列种的顺序对减去逆序对,顺序对可以用逆序对表示,现在只考虑顺序对。注意到,如果\(i<j,p_i>p_j\)且\(i\)在子序列中\(j\)不在子序列中,那么把\(j\)弄
  • 2023-05-19「解题报告」AGC023E Inversions
    好。首先考虑怎么计算方案数。我们考虑按照\(a_i\)从小往大选,设排序后的下标为\(b_i\),那么容易得出方案数为:\[s=\prod_{i=1}^n(a_{b_i}-i+1)\]我们设\(c_i=a_{b_i}-i+1\),这代表着某个数的选择方案数。然后考虑经典拆贡献,枚举每一对\((i,j)\),求\(p_i>p_j
  • 2023-01-22B. Emordnilap【Codeforces Round #845 (Div. 2) and ByteRace 2023】
    B.Emordnilap原题链接Apermutationoflengthnisanarrayconsistingofndistinctintegersfrom1toninarbitraryorder.Forexample,[2,3,1,5,4]isape
  • 2023-01-07F. Binary Inversions
      思路:计算每个数组中每1相匹配的0的个数-->依次进行01转换比较每个1相匹配0的个数之和,取最大值。intoz[210000][2];intmain(){longtime,i,n,j;inta[
  • 2022-11-25CF1637H Minimize Inversions Number
    MinimizeInversionsNumber首先考虑\(k=1\),记\(g_i=\sum_{j=1}^{i-1}[p_i<p_j]-\sum_{j=1}^{i-1}[p_i>p_j]\),那么\(g_i\)表示将\(i\)移向最前面逆序
  • 2022-11-24codeforce E - Binary Inversions题解
    题目:给你一个01串,现在你可以(或者不用)选取其中一个元素进行一次反转操作0-1,1-0;从而使得串中的逆序对个数最多。题目链接:codeforceoriginproblem思路:1.如何统计逆序对
  • 2022-11-21CF1540D Inverse Inversions
    题面传送门首先先来想一个\(O(nq)\)的暴力。显然我们有\(O(n\logn)\)的贪心:每次选取为\(0\)的最后一个填入\(n\),然后将这个数后面的\(B_i\)减一,然后将\(n\)减一。这样填
  • 2022-09-28gym 102586 G. matrix inversions
    考虑一个对子对\(A,B\)的贡献,如果\(x_1\ley_1,x_2\ley_2\)的一对点会贡献\(0,0\)或\(+1,+1\),\(x_1<x_2,y_1>y_2\)会贡献\(0,+1\)或\(+1,0\)。设第一种对子最