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

数学(五)

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

对第一个序列交换得到递增序列,此时所有逆序对数量都来自于第二个序列,现在对某对元素{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),接着再看更方便。

相关小说

御妖诀 连载中
御妖诀
月无年
“苏荼…你骗的本王好苦啊…”他等了她三万年,换来的,只是一副空壳罢了。那个曾经爱笑的苏荼,如今变成了杀人的刀。在面对君临御的时候,你的剑也会......
6.3万字2个月前
青山不知语(红线) 连载中
青山不知语(红线)
鱼头煲鸡汤
原以为自己是没有父亲的,结果等自己母亲死了才知道母亲谈了一个异世界的人,被接回去的时候才知道,自己还有一个姐姐,但这个姐姐很不喜欢她。可以说......
3.5万字2个月前
你好,大妖 连载中
你好,大妖
这条小鱼在乎捏
我是一个半人半妖的妖怪我出生就被诅咒过所以我父母就不要我了丢给了我师傅白泽但是师傅说以后会一只大妖叫乘黄的非常爱我爱我?为什么也要丢下我?
0.8万字2个月前
林晓晓 连载中
林晓晓
多吃一点米
故事设定了基调和背景,接下来的故事将围绕陆霆骁和林晓晓之间的关系发展,以及他们如何共同面对即将到来的挑战和阴谋
2.1万字2个月前
旁观者有罪 连载中
旁观者有罪
悲楚南落笔兰
往往查的越多…死的就越快,警告的终端便是死亡,查不到的往往是最危险的,科学的终端是玄学…而玄学的终端则是无尽的幻想……
0.6万字2个月前
溺于夏海 连载中
溺于夏海
颜笙_17007168380330353
我从小就是不幸的人,我的不幸换来了他的出现,可阳光永远不会在我身上停留太久,我会追逐阳光,可每次只差一步
1.8万字5天前