Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52735 | AK2022071367 | 敏捷排列 | C++ | 解答错误 | 30 | 0 MS | 260 KB | 611 | 2022-07-20 11:51:25 |
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=21; int n,a,b,p[N],m,q[N]; bool vis[N]; int calc() { int ans=n; for(int i=1; i<=n; ++i) if(!vis[i]) { --ans,vis[i]=true; for(int j=p[i]; j!=i; j=p[j])vis[j]=true; } return ans; } int main() { cout<<setprecision(20)<<fixed; scanf("%d%d%d",&n,&a,&b); for(int i=1; i<=n; ++i)scanf("%d",&p[i]); double ans=calc()*a; if(b>n*a) return cout<<ans<<endl,0; double x=1.0; for(int i=1; i*b<=ans; ++i) { x=x*0.1; double res=i*b+x*(a*n); ans=min(ans,res); } cout<<ans<<endl; return 0; }