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)先对序列求逆序对的数目,归并排序 ...
最新文章
- 【内核】嵌入式linux内核的五个子系统
- python绘制雷达图-使用Python绘制雷达图
- tr的display属性出现td的colspan无效问题
- Boost:post process后期处理的测试程序
- 【Alpha】第一次Daily Scrum Meeting
- 【Linux】free命令查询服务器内存信息
- 伪标签Pseudo Label
- 提莫攻击 findPoisonedDuration
- 【Java】渐变头像生成-代码实现
- 一个人能够哲学思考的条件
- vim代码格式化插件clang-format
- 拼多多商品详情采集上传京东店铺(拼多多商品详情接口,京东商品详情接口,拼多多整店宝贝采集接口,一键采集拼多多宝贝详情接口,无货源商品详情采集接口)代码对接教程
- css的论文,css
- 什么是蜜罐、蜜饵、蜜标、蜜网、蜜场?
- 7z文件格式及其源码的分析
- kudu之Tablet Copy设计
- 存储过程基本语法结构
- 微信小程序 springboot在线考试系统Android hbuilderx App毕业设计
- 汽车电脑是linux吗,如果Windows是汽车,那么Linux就是坦克
- 八爪鱼 爬取微博中的图片到本地
热门文章
- GPS公司内部管理系统
- 关键词排名提升(提升关键词排名的方法)
- java bluecove教程_Eclipse + Java + BlueCove + WIN/MAC 蓝牙开发
- 系统集成项目管理工程师笔记_备考常见英文词汇汇总
- 维恩贝特面试JAVA后台开发
- win快捷键_win10系统超实用快捷键,提高你的效率!
- STM8S的ADC配置
- bzoj 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典【dp】
- 计算机如何回到桌面,电脑系统教程:win10怎么返回到桌面状态
- git仓库报错【 ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to】