数学联邦政治世界观
超小超大

数学(五)

思路:先把第一个序列排序,第二个序列的顺序不定。

对第一个序列交换得到递增序列,此时所有逆序对数量都来自于第二个序列,现在对某对元素{i,j}操作,使其顺序改变后,第一个序列一定会增加k个逆序对,但是第二个序列减少逆序对一定<=k,得不偿失了,所以只需要对一个序列排序即可。

证明:为简化运算,我们将排序移动过程全部变为相邻项交换。

当第一个序列为严格递增序列时,第二个序列想要减少逆序对数量时,每项不在原有位置上的元素都要移动相应距离,在移动过程中每与相邻项交换一次,第一个序列逆序对一定减1,但是第二个逆序对数量最多减少1。

举个例子:

第二个序列为3 4 1 2,想要元素3回到它应在的位置上,需要交换两次,当元素3,4交换时,逆序对数量不减反增,第一个序列逆序对加1,以此类推。

#include<iostream>

#include<cstring>

#include<vector>

using namespace std;

using LL = long long;

int main(){

cin.tie(0);

cout.tie(0);

ios::sync_with_stdio(0);

int T;

cin>>T;

while(T--){

int n;

cin>>n;

vector<int> a(n), b(n);

for(int i = 0; i<n; i++) cin>>a[i];

for(int i = 0; i<n; i++) cin>>b[i];

vector<int> id(n);

for(int i = 0; i<n; i++) id[i] = i;

sort(id.begin(), id.end(), [&](int x, int y){

return a[x]<a[y];

});

for(int i = 0; i < n; i++){

cout << a[id[i]] << ' ';

}

cout << '\n';

for(int i = 0; i < n; i++){

cout << b[id[i]] << ' ';

}

cout << '\n';

}

}

数学联邦政治世界观提示您:看后求收藏(笔尖小说网http://www.bjxsw.cc),接着再看更方便。

相关小说

十二星座之星空璀璨 连载中
十二星座之星空璀璨
陌cc
当你仰望天空,星空璀璨,繁星闪耀,如此美丽的背后究竟是怎样的凶险和困境,才有如此漂亮的星空呢?星空之下隐藏的秘密又是什么呢?|星空如此璀璨,......
6.3万字4个月前
最后让我在看ta 连载中
最后让我在看ta
南屿崽
我是林川,永远爱着别人31的林川的想问29岁的林川,值得吗?我就是我,谁都替代不了四季的轮回,我们还会在见面的最后在看ta,看的是她还是他记......
10.8万字3个月前
作者的发疯或随笔 连载中
作者的发疯或随笔
季亭.
作者的发疯随笔小日常而已啦,可能存在多元素,毕竟我有的时候可能就灵感爆发,嗯,想写一些如咒回文野的同人短文我可能就会写在这里,当然更多时候是......
0.5万字2个月前
亓妄 连载中
亓妄
十云逝
亓妄说过,他只爱沈晚烟,他只信余倞和余焚。沈晚烟和他的母亲,是亓妄最后的防线;可在不久后,这最后的防线也断裂了。
1.3万字4周前
救命!这个外星人统治的世界! 连载中
救命!这个外星人统治的世界!
_白控
我,幸星海,需要拯救即将被外星人统治的水域。在白的帮助下,我来到了外星人统治的世界。将人类看做宠物?我不敢想下去了……
7.6万字4周前
量子回响 连载中
量子回响
小十与小雨
1.8万字7天前