思路:很明显的贪心,再看一眼范围,那么很明显的暴力+贪心。
证明贪心:因为每次交换,都不会影响到之前已经确定的数。所以贪心正确。
代码:
#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' #define LL __int128 using namespace std; const int N=2e5+10,M=1e3+10,mod=998244353,INF=0x3f3f3f3f; int a[N],b[N],c[N],pre[N]; signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n;cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; int ans=0; for(int i=1;i<=n;i++) { if(a[i]==i) continue; for(int j=i+1;j<=n;j++) { if(a[j]==i) { swap(a[i],a[j]); ans++; break; } } } cout<<ans<<endl; return 0; }
P8637 [蓝桥杯 2016 省 B] 交换瓶子--贪心
最新推荐文章于 2024-07-23 15:46:40 发布