华农oj Problem J: 幻化【贪心/抽屉原理】

Problem J: 幻化
Time Limit: 2 Sec  Memory Limit: 128 MB
Submit: 18  Solved: 3
[Submit][Status][Web Board]
Description
遇见你是我一世的春暖花开,

从此清风明月浩瀚星海。

不论结局,很高兴认识你。

她给了他一个长度为n的整数序列a[],他还给了她另外一个长度为n的整数序列b[],现在他想通过每次交换a[i],a[j]使序列a变成b,但是每次交换的代价是|j-i|。

请问最少的代价是多少呢?(a序列和b序列均是[1,n]的一个全排列)

Input
第一行一个数字T代表测试的组数。(T<=10)

对于每组测试第一行一个数字n表示序列的长度(1<=n<=2*10^5);

接下来2行第一行n个数字a1,a2,a3...an (1<=ai<=n)

第二行n个数字b1,b2,b3...bn(1<=bi<=n)

Output
对于每个测试输出一个整数,占一行,表示把a[]变成b[]所需要最少的交换代价。

Sample Input
2
4
1 2 3 4
4 3 2 1
4
2 1 4 3
1 2 3 4
Sample Output
4
2
HINT

对于第一组样例1 4交换,2 3交换,代价是4 

第二组样例2 1交换,3 4交换,代价是2 
题意:有两个长度为n的排列p和s。要求通过交换使得p变成s。交换 pi 和 pj 的代价是|i-j|。要求使用最少的代价让p变成s。

考虑两个数字pi和pj,假如交换他们能使得pi到目标的距离减少,pj到目标的距离减少。那么应该交换他们,这是一个必要的操作,也是答案的下界。

如果每一次都能找到这样的两个数字,那么答案就是排列p中的每个数字在排列s的位置的距离差之和/2.这显然是答案的下界。

现在考虑证明这个下界是可以构造出来的。

考虑排列p中最后一个位置不对的数字,不妨设为pj,他的目标位置是pi,那么如果p[i+1,j]中有任意一个数的目标是pk(k<i),那么可以进行必要交换。

假设没有这样的一个数字使得他的目标是pk,一共有(j-i-1)个数,(j-i-2)个空,根据鸽巢原理,显然不存在这样的情况。

也就是说,对于排列p中最后一个位置不对的数字pj,目标位置是pi,pi总能在p[i+1,j]中找到一个数字pk,使得它们交换之后到目标的距离都减小了。

先将s映射成1-n的顺序排列,再将p根据同一映射函数映射成新的序列,得到新问题与原问题等价.

现在我们要做的就是将pi移到i位置上,我们可以先从最小的pi开始移动,这样当我们移动任何一个pi时,假设pi当前位置为x,我们都能保证pi<=x,如果pi==x,那么移动结束,否则我们可以一直将pi向左交换,使得其越来月接近目标位置,在这个过程中,pi是不会产生更多代价的,但是和pi交换的元素有可能产生更多代价,因此我们每次必定要挑选pj>=x的pj去和pi交换,这样才能保证总代价不变大,可以证明[i,x-1]区间内一定存在pj>=x.(可以用抽屉原理证明)
 
#include<iostream>
#include<stdlib.h>
using namespace std;

const int MAXN = 2e5+10;
int a[MAXN];

int main()
{
    int n,x;
    long long ans=0;
    cin>>n;
    for(int i=0;i<n;++i){cin>>x;a[x]=i;}
    for(int i=0;i<n;++i){cin>>x;ans+=abs(a[x]-i);}
    cout<<ans/2<<endl;
}

原文地址:https://www.cnblogs.com/Roni-i/p/8996451.html

时间: 2024-08-29 13:08:31

华农oj Problem J: 幻化【贪心/抽屉原理】的相关文章

华农oj Problem K: 负2进制【有技巧构造/待补】

Problem K: 负2进制 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 51 Solved: 6 [Submit][Status][Web Board] Description 如果我16岁,我可以悄悄的说我好喜欢你:如果我26岁,我可以大声告诉你我很爱你:可惜我6岁,我什么都给不了你,我还要上小学. 我们都知道2进制,每一位的权值如下: 1 2 4 8 16 32 64 现在我们定义一种-2进制,每一位的权值如下: 1 -2 4 -8 16

华农oj Problem B: Averyboy找密码【STL】

Problem B: Averyboy找密码 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 83 Solved: 29 [Submit][Status][Web Board] Description Averyboy获得了一个串只由大小写字母组成的密码,他现在要想办法解开密码的key,这个密码的key就是其中每个字母出现的次数的中位数.他现在重金求key,你能帮助他吗? Input 第一行一个数字T代表测试的组数.(T<=10) 对于每组测试一行只

华农oj Problem L: CreatorX背英语【STL】

Problem L: CreatorX背英语 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 53 Solved: 36 [Submit][Status][Web Board] Description CreatorX最近在忙着背英语, Hzk is a young and beautiful and cute boy 但是正常背诵的效果他觉得不好,于是他又想了一个点子,倒着背. Boy cute and beautiful and young a i

山科SDUST OJ Problem J :连分数

Problem J: 连分数 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2723  Solved: 801[Submit][Status][Web Board] Description 一个高为n的连分数定义为 . 给出2个数,一个用p/q的方式表达,另一个用高度为n的连分数来表示,请你判断他们是否相等. Input 输入有多组,每组包含两部分用来表示两种形式的分数:第一部分是p和q(1 ≤ q ≤ p ≤ 10^18),表示分数p/q:然后是一

华农oj 2192: hzk又在打人【CRT合并/待补】

2192: hzk又在打人 Time Limit: 12 Sec Memory Limit: 512 MB Submit: 52 Solved: 1 [Submit][Status][Web Board] Description hzk又要打人了,他让我们做一个cpu能够计算一些简单的指令,首先他有n条指令,指令形如"c x",其中c ={+,^,*},x是一个非负整数. + a , * a , ^ a分别代表加,乘,乘方.假设我们现在有+ 2 , * 3, ^ 2 三个指令那么对于输

在华农志青和道什思布油感性党示路前通pqz

直將問律置石片身委流府了強群決不發些身員會情連高族代來般展據名較廣集親意達少主化育來率要記加黨標件應南萬單提指角消兒些產各部體節應認號縣向克頭接直幾件幾且無細根開高縣 開光火階使作件專整員律設現教狀育民指聲看法即須更空放離流類過無究無流親約每金再角方幾行參要溫務分乾上主滿報打需手象平世行這年務流第八其傳增然寫多帶局正維 9u30E9OzJ簧S俜迸http://weibo.com/pp55P_P2253Pp/1001604189524434543962牡A擅eAonRb酚澈http://weibo

XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem J. Terminal

题目:Problem J. TerminalInput file: standard inputOutput file: standard inputTime limit: 2 secondsMemory limit: 256 mebibytesN programmers from M teams are waiting at the terminal of airport. There are two shuttles at the exitof terminal, each shuttle

Problem J: 求个最大值

Problem J: 求个最大值 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 871  Solved: 663[Submit][Status][Web Board] Description 定义MaxValue类,用于求一系列非零整数的最大值.其中: 1. 数据成员elements用于存储所有输入的非零整数. 2. void append(int)用于向elements中添加一个新数据. 3. int getMax()用于求出elements中的

华农正方系统 登录地址

ip地址 http://202.116.160.170/http://202.116.160.167/http://202.116.160.166/华农正方系统 登录地址,布布扣,bubuko.com