Submission #594665

#TimeUsernameProblemLanguageResultExecution timeMemory
5946651neLet's Win the Election (JOI22_ho_t3)C++14
10 / 100
1669 ms8612 KiB
#include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); double long n,k;cin>>n>>k; vector<pair<double long,double long>>arr,temp; for (int i = 0;i<n;++i){ double long x,y;cin>>x>>y; if (y == -1){ y = 1e7; } arr.push_back({x,y}); } sort(arr.begin(),arr.end(),[&](auto x,auto y){ if (x.second == y.second)return x.first < y.first; return x.second < y.second; }); for (auto x:temp)arr.push_back(x); double long mxn = 1e15; vector<vector<double long>>dp(n + 1,vector<double long>(n + 2,mxn)); dp[0][1] = 0.0; for (int i = 0;i<n;++i){ vector<vector<double long>>cur_dp(n + 1,vector<double long>(n + 2,mxn)); for (int j = 0;j<=i;++j){ for (int p = 1;p <= i + 1;++p){ cur_dp[j][p] = min(cur_dp[j][p],dp[j][p]); cur_dp[j + 1][p + 1] = min(cur_dp[j + 1][p + 1],dp[j + 1][p + 1]); cur_dp[j + 1][p] = min(cur_dp[j + 1][p],dp[j + 1][p]); if (arr[i].second!=-1){ cur_dp[j + 1][p + 1] = min(dp[j][p] + (double long)(arr[i].second / (p)),cur_dp[j + 1][p + 1]); } cur_dp[j + 1][p] = min(cur_dp[j + 1][p],dp[j][p] + (double long)(arr[i].first / (p))); } } swap(cur_dp,dp); } double long ans = mxn; for (int i = 0;i<=n + 1;++i){ ans = min(ans,dp[k][i]); } cout<<fixed<<setprecision(15)<<ans<<'\n'; return 0; }
#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...