Submission #938946

#TimeUsernameProblemLanguageResultExecution timeMemory
938946PacybwoahLet's Win the Election (JOI22_ho_t3)C++17
100 / 100
809 ms4664 KiB
#include<iostream> #include<vector> #include<iomanip> #include<utility> #include<algorithm> using namespace std; typedef long double ld; vector<pair<ld,ld>> vec; int n,k; ld solve(int m){ vector<vector<ld>> dp(n+1,vector<ld>(k-m+1,1e9+7)); dp[1][0]=(m>0?vec[1].first:0); if(k-m>0) dp[1][1]=vec[1].second/ld(m+1); for(int i=2;i<=n;i++){ for(int j=0;j<=min(k-m,i);j++){ if(i!=j) dp[i][j]=min(dp[i][j],dp[i-1][j]+(i-j>m?0:vec[i].first/(long double)(i-j))); if(j>0) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+vec[i].second/(long double)(m+1)); } } /*for(int i=1;i<=n;i++){ for(int j=0;j<=k-m;j++) if(m==2) cout<<dp[i][j]<<" "; cout<<"\n"; }*/ return dp[n][k-m]; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cin>>n>>k; vec.resize(n+1); for(int i=1;i<=n;i++) cin>>vec[i].second>>vec[i].first; for(int i=1;i<=n;i++) if(vec[i].first==-1) vec[i].first=1e9; sort(next(vec.begin()),vec.end()); //for(int i=1;i<=n;i++) cout<<vec[i].first<<' '<<vec[i].second<<"\n"; int l=0,r=k; ld ans=1e9+7; /*while(l<r){ int mid=(l+r)>>1; ld a=solve(max(mid,0)),b=solve(min(mid+1,r)); ans=min(ans,min(a,b)); if(a>b) l=min(mid+1,r); else r=(max(mid,0)); }*/ for(int i=0;i<=k;i++) ans=min(ans,solve(i)); cout<<fixed<<setprecision(12)<<ans; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:35:9: warning: unused variable 'l' [-Wunused-variable]
   35 |     int l=0,r=k;
      |         ^
Main.cpp:35:13: warning: unused variable 'r' [-Wunused-variable]
   35 |     int l=0,r=k;
      |             ^
#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...