CF1375E Inversion SwapSort
一、题目
点此看题
二、解法
这种求解之类的问题可以考虑构造,其中有一种常用方法就是缩减问题规模。
先考虑对于一个排列的求解,其他情况可以通过双关键字(值,下标)转化成排列。我们把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相关推荐
- 【CodeForces】Codeforces Global Round 9
比赛链接 点击打开链接 官方题解 点击打开链接 Problem A. Sign Flipping 将奇数位的数取非正值,偶数位的数取非负值即可. 单组数据时间复杂度 O ( N ) O(N) O(N) ...
- UVA 11990 ``Dynamic'' Inversion 动态逆序对
``Dynamic'' Inversion Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/index ...
- Inversion Sequence(csu 1555)
Description For sequence i1, i2, i3, - , iN, we set aj to be the number of members in the sequence w ...
- [Js-Spring]Spring与IoC(控制反转,Inversion of Control)
控制反转(Ioc,Inversion of Control),是一个概念,一种思想.指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理.控制反转就是对对象控制权的转移,从 ...
- IoC(Inversion of Control,控制反转)模式
IoC模式 1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它. ...
- 【算法与数据结构】一道检测inversion count的初级算法
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.题目 这是一道检测inversion count的算法.它将检测输入序列中反序输入的个数,即检测其中有几对A ...
- 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 ...
- 逆序数2 HDOJ 1394 Minimum Inversion Number
题目传送门 1 /* 2 求逆序数的四种方法 3 */ 1 /* 2 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]. ...
- [HDU1394]Minimum Inversion Number
题目:Minimum Inversion Number 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 分析: 1)先对序列求逆序对的数目,归并排序 ...
最新文章
- 分析与设计(AD)简介(2)
- typedef 多文件引用
- 栈 - 关于出栈序列,判断合法的出栈序列
- 程序员保值的4个秘密
- java判断是否换行_如何检测java中的换行符
- python数据结构之集合(set)——超详细
- apktool + dex2jar + xjad反编译apk文件
- node视频转码框架
- ecshop模板支持php,ecshop模板不支持引入PHP语句的解决方法
- 混沌初开:全新HarmonyOS 2正式到来!
- Servlet.init() for servlet [Global] threw exception
- 本地安装brat标注平台
- SqlDbx远程链接DB2数据库
- Javaweb基础配置模板(mybatis+javaweb)
- 武汉mysql ocp考点_MySQL OCP考试复习系列–开篇:了解MySQL考试
- 小米运动改步数不同步的原因找到了,尽然是这问题
- KVM虚拟化技术(三)之克隆虚拟机
- 三星坠落;最糟的日子还没到来
- 有哪些证件扫描软件?六种值得一试的途径
- 2023年长租公寓行业研究报告