一、题目

点此看题

二、解法

这种求解之类的问题可以考虑构造,其中有一种常用方法就是缩减问题规模。

先考虑对于一个排列的求解,其他情况可以通过双关键字(值,下标)转化成排列。我们把nnn放在位置nnn,而且要保证这个操作用完了和位置nnn相关的逆序对,并且前面的相对顺序不变(以前存在逆序对还是存在,不存在还是不存在)

设p[i]p[i]p[i]为iii值的位置,a[i]a[i]a[i]为iii位置的值,构造出一种方法为依次交换(p[a[i]+1],n)....(p[n],n)(p[a[i]+1],n)....(p[n],n)(p[a[i]+1],n)....(p[n],n),可以自行检查一下上面的条件。

#include <cstdio>
#include <algorithm>
using namespace std;
const int M = 1005;
int read()
{int num=0,flag=1;char c;while((c=getchar())<'0'||c>'9')if(c=='-')flag=-1;while(c>='0'&&c<='9')num=(num<<3)+(num<<1)+(c^48),c=getchar();return num*flag;
}
int n,m,k,a[M],p[M],x[M*M],y[M*M];
struct node
{int a,b;bool operator < (const node &r) const{if(a==r.a) return b<r.b;return a<r.a;}
}s[M];
signed main()
{n=read();for(int i=1;i<=n;i++){s[i].a=read();s[i].b=i;}sort(s+1,s+1+n);for(int i=1;i<=n;i++){a[s[i].b]=i;p[i]=s[i].b;}for(int i=n;i>=1;i--){for(int j=a[i]+1;j<=i;j++)x[++k]=p[j],y[k]=i;for(int j=a[i];j<i;j++){p[j]=p[j+1];a[p[j]]=j;}}printf("%d\n",k);for(int i=1;i<=k;i++)printf("%d %d\n",x[i],y[i]);
}

CF1375E Inversion SwapSort相关推荐

  1. 【CodeForces】Codeforces Global Round 9

    比赛链接 点击打开链接 官方题解 点击打开链接 Problem A. Sign Flipping 将奇数位的数取非正值,偶数位的数取非负值即可. 单组数据时间复杂度 O ( N ) O(N) O(N) ...

  2. UVA 11990 ``Dynamic'' Inversion 动态逆序对

    ``Dynamic'' Inversion Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/index ...

  3. Inversion Sequence(csu 1555)

    Description For sequence i1, i2, i3, - , iN, we set aj to be the number of members in the sequence w ...

  4. [Js-Spring]Spring与IoC(控制反转,Inversion of Control)

    控制反转(Ioc,Inversion of Control),是一个概念,一种思想.指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理.控制反转就是对对象控制权的转移,从 ...

  5. IoC(Inversion of Control,控制反转)模式

    IoC模式 1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它. ...

  6. 【算法与数据结构】一道检测inversion count的初级算法

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.题目 这是一道检测inversion count的算法.它将检测输入序列中反序输入的个数,即检测其中有几对A ...

  7. Inversion of Control Containers and the Dependency Injection pattern--Martin Fowler

    原文地址:https://martinfowler.com/articles/injection.html n the Java community there's been a rush of li ...

  8. 逆序数2 HDOJ 1394 Minimum Inversion Number

    题目传送门 1 /* 2 求逆序数的四种方法 3 */ 1 /* 2 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]. ...

  9. [HDU1394]Minimum Inversion Number

    题目:Minimum Inversion Number 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 分析: 1)先对序列求逆序对的数目,归并排序 ...

最新文章

  1. 分析与设计(AD)简介(2)
  2. typedef 多文件引用
  3. 栈 - 关于出栈序列,判断合法的出栈序列
  4. 程序员保值的4个秘密
  5. java判断是否换行_如何检测java中的换行符
  6. python数据结构之集合(set)——超详细
  7. apktool + dex2jar + xjad反编译apk文件
  8. node视频转码框架
  9. ecshop模板支持php,ecshop模板不支持引入PHP语句的解决方法
  10. 混沌初开:全新HarmonyOS 2正式到来!
  11. Servlet.init() for servlet [Global] threw exception
  12. 本地安装brat标注平台
  13. SqlDbx远程链接DB2数据库
  14. Javaweb基础配置模板(mybatis+javaweb)
  15. 武汉mysql ocp考点_MySQL OCP考试复习系列–开篇:了解MySQL考试
  16. 小米运动改步数不同步的原因找到了,尽然是这问题
  17. KVM虚拟化技术(三)之克隆虚拟机
  18. 三星坠落;最糟的日子还没到来
  19. 有哪些证件扫描软件?六种值得一试的途径
  20. 2023年长租公寓行业研究报告

热门文章

  1. [在线挑战]【i春秋】渗透测试入门 —— 渗透测试笔记 --转
  2. MatrikonOPC与欧姆龙PLC以太网通讯
  3. 【写博客常用】参考文献一定要按顺序标么
  4. css 角度单位 deg turn grad turn
  5. c# ArrayList 和 Hashtable 的使用
  6. 【中医学】0 绪论 + 1 阴阳五行学说
  7. 时间复杂度和空间复杂度复习 (一)
  8. 拼多多Temu出海项目正式上线,教你如何做好测评补单,分得第一杯羹
  9. Spark:reduceByKey与groupByKey进行对比
  10. Druid 索引服务的资源精细化调度