一、题目

点此看题

二、解法

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

先考虑对于一个排列的求解,其他情况可以通过双关键字(值,下标)转化成排列。我们把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. 【内核】嵌入式linux内核的五个子系统
  2. python绘制雷达图-使用Python绘制雷达图
  3. tr的display属性出现td的colspan无效问题
  4. Boost:post process后期处理的测试程序
  5. 【Alpha】第一次Daily Scrum Meeting
  6. 【Linux】free命令查询服务器内存信息
  7. 伪标签Pseudo Label
  8. 提莫攻击 findPoisonedDuration
  9. 【Java】渐变头像生成-代码实现
  10. 一个人能够哲学思考的条件
  11. vim代码格式化插件clang-format
  12. 拼多多商品详情采集上传京东店铺(拼多多商品详情接口,京东商品详情接口,拼多多整店宝贝采集接口,一键采集拼多多宝贝详情接口,无货源商品详情采集接口)代码对接教程
  13. css的论文,css
  14. 什么是蜜罐、蜜饵、蜜标、蜜网、蜜场?
  15. 7z文件格式及其源码的分析
  16. kudu之Tablet Copy设计
  17. 存储过程基本语法结构
  18. 微信小程序 springboot在线考试系统Android hbuilderx App毕业设计
  19. 汽车电脑是linux吗,如果Windows是汽车,那么Linux就是坦克
  20. 八爪鱼 爬取微博中的图片到本地

热门文章

  1. GPS公司内部管理系统
  2. 关键词排名提升(提升关键词排名的方法)
  3. java bluecove教程_Eclipse + Java + BlueCove + WIN/MAC 蓝牙开发
  4. 系统集成项目管理工程师笔记_备考常见英文词汇汇总
  5. 维恩贝特面试JAVA后台开发
  6. win快捷键_win10系统超实用快捷键,提高你的效率!
  7. STM8S的ADC配置
  8. bzoj 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典【dp】
  9. 计算机如何回到桌面,电脑系统教程:win10怎么返回到桌面状态
  10. git仓库报错【 ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to】