Submission #734579

#TimeUsernameProblemLanguageResultExecution timeMemory
7345791075508020060209tcLet's Win the Election (JOI22_ho_t3)C++14
21 / 100
309 ms4316 KiB
#include<bits/stdc++.h> using namespace std; //#define double long double int n;int K; int M; pair<int,int>ar[200005]; double ans; double dp[510][510]; int srtsf[510][510]; int srtps[510][510]; bool cmp(pair<int,int>i,pair<int,int>j){ if(i.second<j.second){return 1;} if(i.second>j.second){return 0;} if(i.first<j.first){return 1;} return 0; } double solve(int m){ for(int i=0;i<=n;i++){ for(int j=0;j<=n;j++){ dp[i][j]=1000000; } } dp[1][0]=(double)ar[1].first/(double)(m+1); dp[1][1]=ar[1].second; for(int i=1;i<=n;i++){ for(int j=0;j<=i;j++){ if(dp[i][j]>500000){continue;} dp[i+1][j]=min(dp[i+1][j],dp[i][j]+(double)ar[i+1].first/(double)(m+1)); dp[i+1][j+1]=min(dp[i+1][j+1],dp[i][j]+(double)ar[i+1].second/(double)(j+1)); } } double ret=dp[K][m]; //cout<<fixed<<setprecision(6)<<ret<<" "; for(int i=K-1;i>=m;i--){ ret=min(ret,dp[i][m]+(double)srtps[i+1][i+1+K-i-1]/(double)(m+1)); } //cout<<fixed<<setprecision(6)<<ret<<endl; return ret; } signed main(){ cin>>n>>K; M=0; for(int i=1;i<=n;i++){ cin>>ar[i].first>>ar[i].second; if(ar[i].second==-1){ ar[i].second=200000; }else{ M++; } } sort(ar+1,ar+n+1,cmp); /* cout<<endl; for(int i=1;i<=n;i++){ cout<<ar[i].first<<" "<<ar[i].second<<endl; } cout<<endl; */ for(int i=1;i<=n;i++){ for(int j=i;j<=n;j++){ srtsf[i][j]=ar[j].first; //srtps[i][j]=srtsf[i][j]+srtps[i][j-1]; } sort(srtsf[i]+i,srtsf[i]+n+1); for(int j=i;j<=n;j++){ srtps[i][j]=srtsf[i][j]+srtps[i][j-1]; } } /* for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout<<srtsf[i][j]<<" "; }cout<<endl; } */ ans=5000000; for(int i=0;i<=min(K,M);i++){ ans=min(ans,solve(i)); } cout<<fixed<<setprecision(6)<<ans<<endl; /* double l=0;double r=500000; for(int ttt=0;ttt<90;ttt++){ double mi=(l+r)/2; if(ok(mi)){ l=mi; }else{ r=mi; } } cout<<fixed<<setprecision(6)<<l<<endl; */ }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...