1 条题解
-
0
贪心解决
#include <bits/stdc++.h> using namespace std; int n,a[1001],t[4],c[4][4],ans; int main() { cin>>n; for (int i=1;i<=n;i++) cin>>a[i],t[a[i]]++; for (int i=1;i<=t[1];i++) c[1][a[i]]++; for (int i=t[1]+1;i<=t[1]+t[2];i++) c[2][a[i]]++; //统计个数 ans=c[1][2]+c[1][3];//把1换到正确位置的最少步数 c[2][3]+=max(0,c[2][1]-c[1][2]);//有多少3被交换到了二位置 ans+=c[2][3];//将2,3交换到正确位置 cout<<ans; return 0; }
- 1
信息
- ID
- 450
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 54
- 已通过
- 25
- 上传者