Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32996 baka24 【S】T1 C++ 解答错误 36 50 MS 39480 KB 1255 2024-10-02 17:02:54

Tests(4/11):


#include<bits/stdc++.h> using namespace std; #define int long long #define double long double #define lson (pos<<1) #define rson (pos<<1|1) int read(){int x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while('0'<=c&&c<='9')x=x*10+c-'0',c=getchar();return x*f;} const int MAXN=2010,MAXM=5010,inf=1000000000; int n,m,q,mx,a[MAXN],p[MAXN],b[MAXN]; int f[2][MAXN][MAXM]; void slv(){ n=read(),m=read(); for(int i=1;i<=n;i++)a[i]=read(),p[a[i]]++,mx=max(mx,a[i]); for(int i=m;i>=0;i--)p[i]+=p[i+1]; for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)f[0][i][j]=inf; for(int i=0;i<=n;i++)f[0][i][0]=i*n; sort(a+1,a+n+1); for(int i=1;i<=m;i++){ int minv=i>1?max(0ll,n-m/i):0; for(int o=minv;o<=n;o++)for(int j=0;j<=m;j++)f[i&1][o][j]=f[i&1^1][o][j]; for(int o=minv+1;o<=n;o++){ for(int j=m;j>=i;j--){ f[i&1][o][j]=min(f[i&1][o][j],f[i&1][o-1][j-i]+p[i+1]); // cout<<f[i&1][o][j]<<" "; } // cout<<endl; } // cout<<endl; } int res=inf; for(int i=0;i<=m;i++)res=min(res,f[n&1][n][i]); printf("%.10Lf",(double)res/n); } signed main(){ slv(); return 0; }


测评信息: