CF1918B Minimize Inversions 题解

CF1918B Minimize Inversions

诈骗题,点破一文不值。

交换元素 i,j 时可能有以下四种情况:

情况一:ai<aj,bi<bj,此时总逆序对数加 1

情况二:ai>aj,bi<bj,此时总逆序对数不变。

情况三:ai<aj,bi>bj,此时总逆序对数不变。

情况四:ai>aj,bi>bj,此时总逆序对数减 1

分析上面四种情况,发现只要 ai<aj 时交换就是不劣的,那么我们只用把每个元素按照 a 从小到大来排序即可。

#include <bits/stdc++.h>
using namespace std;
struct val
{
	long long a,b;
}a[300000];
long long t,n;
bool cmp(struct val a,struct val b)
{
	return a.a<b.a;
}
 
int main()
{
	scanf("%lld",&t);
	while(t--)
	   {
	   	scanf("%lld",&n);
	   	for(int i=1;i<=n;i++)scanf("%lld",&a[i].a);
	   	for(int i=1;i<=n;i++)scanf("%lld",&a[i].b);
	   	sort(a+1,a+n+1,cmp);
	   	for(int i=1;i<=n;i++)printf("%lld ",a[i].a);
	   	printf("\n");
	   	for(int i=1;i<=n;i++)printf("%lld ",a[i].b);
	   	printf("\n");
	   }
	return 0;
} 
posted @   w9095  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示