Submission #1156686

#TimeUsernameProblemLanguageResultExecution timeMemory
1156686fatman87878Let's Win the Election (JOI22_ho_t3)C++20
100 / 100
896 ms4424 KiB
#include<bits/stdc++.h> using namespace std; #define IOS cin.tie(nullptr)->sync_with_stdio(0),cin.exceptions(cin.failbit); #define lb(x) (x)&-(x) #define all(x) (x).begin(),(x).end() #define ll long long #define db long double constexpr int maxN=5e2+5; int n,K; db dp[maxN][maxN]; pair<db,db> val[maxN]; inline db DP(int G){ for(int i = 0;i<=K;i++)for(int j = 0;j<=G;j++)dp[i][j] = 1e18; dp[0][0] = 0; for(int i = 0;i<n;i++){ auto [b,a] = val[i]; for(int j = min(K,i+1);j;j--){ if(i+1==j){ for(int k = G;k>=0;k--){ dp[j][k] = min(dp[j][k],dp[j-1][k] + a/(G+1)); if(k)dp[j][k] = min(dp[j][k],dp[j-1][k-1] + b/k); } } else { dp[j][G] = min(dp[j][G],dp[j-1][G] + a/(G+1)); } } } return dp[K][G]; } int main(){ IOS cin>>n>>K; for(int i = 0;i<n;i++){ cin>>val[i].second>>val[i].first; if(val[i].first==-1)val[i].first = 1e9; } sort(val,val+n); db ans = 1e18; for(int i = 0;i<K;i++)ans = min(ans,DP(i)); cout<<fixed<<setprecision(15)<<ans<<'\n'; }
#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...