1574 排列转换
题目来源: CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

 收藏
 关注

现在有两个长度为n的排列p和s。要求通过交换使得p变成s。交换 pi 和 pj 的代价是|i-j|。要求使用最少的代价让p变成s。

Input
单组测试数据。
第一行有一个整数n (1≤n≤200000),表示排列的长度。
第二行有n个范围是1到n的整数,表示排列p。每个整数只出现一次。
第三行有n个范围是1到n的整数,表示排列s。每个整数只出现一次。
Output
输出一个整数,表示从排列p变到s最少要多少代价。
Input示例
样例输入1
4
4 2 1 3
3 2 4 1
Output示例
样例输出1
3

交换pi和pj的代价是|i-j|就相当于将一个数移动到相邻的位置花费为1

这样的话只用看每个数字原序列和终序列的位置差就好了

答案就是所有数的位置差之和除以2

为什么要除以2是因为一个数往右移一位的同时另一个数也往左移了一位

#include<stdio.h>
#include<stdlib.h>
#define LL long long
int a[200005], pos[200005];
int main(void)
{LL ans;int n, i, x;scanf("%d", &n);for(i=1;i<=n;i++){scanf("%d", &a[i]);pos[a[i]] = i;}ans = 0;for(i=1;i<=n;i++){scanf("%d", &x);ans += abs(pos[x]-i);}printf("%lld\n", ans/2);return 0;
}

51nod 1574: 排列转换相关推荐

  1. 51nod 1574 排列转换 codeforce584E. Anton and Ira

    文章目录 题目链接: 题目链接: 51nod 1574 cf584E 先转换一哈题意,就是乱序的排列,把他变成有序的,交换两个数的代价是两个数下标的绝对值,问最小的代价 我就按顺序来,从小到大依次把每 ...

  2. 51nod 1574 排列转换

    分析: 大佬们也有搞错的时候,说把s重排一下,求逆序数对就行了: 这个是相邻两两交换: 正解: 是将所有没有在正确位置的数,他们一次性到达他正确的位置,没有浪费: 1 #include <bit ...

  3. 51nod1574排列转换

    1574 排列转换 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 现在有两个长度为n的排列p和s.要求通过交换使 ...

  4. 51nod 1574 || Codeforces 584 E. Anton and Ira 思维+构造+贪心

    传送门:E. Anton and Ira 题意:给定两个1-n的全排列p和s,假设交换pi和pj的代价是abs(i-j),问怎样将p交换成s才能使代价最小. 思路:先将s映射成1-n的顺序排列,再将p ...

  5. 51nod 1250 排列与交换——dp

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1250 仔细思考dp. 第一问,考虑已知 i-1 个数有多少种方案. ...

  6. 51nod 1843 排列合并机【DP去重】Ender的模拟赛

    题目描述 有两个1~n的排列A,B,序列C一开始为空,每次可以选择进行以下两种操作之一 1)若A不为空,则可取出A的开头元素放在序列C的末尾 2)若B不为空,则可取出B的开头元素放在序列C的末尾 这样 ...

  7. Matlab 基础01 - 多维数组的排列转换和Permute 函数

    前言: 本章通过Matlab官网的例子,介绍Matlab Permute函数的数组维度置换功能:由于官网的说明比较晦涩难懂,所以,这里用自己的语言和理解重新组织了一下. 1 语法: B = permu ...

  8. php转mp3的工厂,魔影工厂怎么转成mp3 魔影工厂转换mp3教程

    魔影工厂支持多种格式的转换,比较常见的有MP3的转换,不过对于这个操作有些新手不是很熟悉.魔影工厂怎么转成mp3?小编带来了魔影工厂转换mp3教程,马上来了解下吧! 类别:视频处理   大小:20.4 ...

  9. 【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识: 1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1 1.2为了区分二.八.十.十六进制,我们 ...

最新文章

  1. dubbo+zookeeper坑坑坑
  2. 快速破解哈希密文findmyhash
  3. Linux利用子命令m,Linux mdir命令
  4. mac ntfs读写插件的双十一活动已经开始啦
  5. 编程面试题之——简答题(持续更新...)
  6. 网页设计-[CSS+DIV设计实例:超酷的竖排导航栏 ]
  7. shell编程-条件判断与流程控制
  8. 索尼爱立信k510驱动_未来人工智能驱动的电信网络:爱立信案例研究
  9. c语言实现作业调度先来先服务和短进程优先,实验2 先来先服务调度和最短作业优先调度算法实现.doc...
  10. 推荐系统实践---第六章:利用社交网络数据
  11. 关于海康相机ip地址无法更改问题
  12. python绘制中国地图(模仿中央气象台)
  13. 机器学习----深刻理解高斯过程回归
  14. 【附Python版教学】“那些年用过的奇葩辞职理由”哈哈哈,看完笑掉牙。
  15. 微信内置浏览器禁止调整字体大小的方法
  16. 云计算之于人类的价值体现在哪里?
  17. html中快速复制上一行并粘贴到下一行
  18. 银河麒麟操作系统添加新硬盘后流程
  19. 习题6-5 巡逻机器人(Patrol Robot, ACM/ICPC Hanoi 2006, UVa1600)
  20. 使用IBM Data Studio 管理DB2

热门文章

  1. python函数定义及调用-python 中函数的定义以及调用先后顺序问题
  2. 2018年python工作好找吗-2018年 Python面试必看的10个问题及答案
  3. 前端链接共享(记录)
  4. 数据库服务器备份日志文件,数据库服务器备份日志文件
  5. 字典树实现_trie 字典树的实现方法
  6. ffmpeg函数介绍
  7. 为什么t6显示登录不到服务器,t6客户端登录不到服务器
  8. matlab矩阵作分钟平均,提高matlab运行速度和节省空间的心得合集(ZT)
  9. mysql技术任务_MySQL基础教程(13)MySQL计划任务
  10. 怎么看linux的命令说明,在linux下,怎么用命令来查看版本?