思路:贪心。因为每个数都不同且不超过n,而且长度也为n,所有排列只能为1 2 3 ......n。所以排好序后与对应元素的差值的绝对值加起来就是答案。
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long const int N=3e5+5; int a[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1); ll ans=0; for(int i=1;i<=n;i++) { ans+=abs(a[i]-i); } cout<<ans<<endl; return 0; }