请问此种贪心思路错在哪里?
查看原帖
请问此种贪心思路错在哪里?
732426
zhanghy123楼主2023/12/17 18:02

rt

#include<bits/stdc++.h>
using namespace std;
int n,a[19999],b[19999],ans;
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++){
		cin>>a[i];
		b[i]=a[i];
	}
	sort(a+1,a+n+1);
	for(int i=1; i<=n; i++)
	{
		if(a[i]!=b[i])
			ans++;
	}
	cout<<(ans+1)/2;
	return 0;
}

87pts , WA on #7

思路:对数组进行排序,将排序后的数组与原数组作比较,遇到不同的数字则证明需要交换,有 ansans 个不同数字需交换 ⌈ans/2⌉\lceil ans/2 \rceil 次

这是多数人最容易想到的方法,本蒟蒻在特判AC后仍对其错误性不太明白
求助各位dalao指正 或hack数据

2023/12/17 18:02
加载中...