Submission #992034

#TimeUsernameProblemLanguageResultExecution timeMemory
992034OtalpLet's Win the Election (JOI22_ho_t3)C++14
56 / 100
2592 ms15192 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int ll
#define pii pair<int, int>
#define ff first
#define ss second
#define ld long double
#define pb push_back

pair<ld, ld> a[300100];
ll b[300100];
ll us[300100];
ll n, m;
ld dp[600][600], ob[600][600];


bool cmp(int x, int y){
    return a[x].ss < a[y].ss;
}

bool cmp2(pair<ld, ld> a, pair<ld, ld> b){
    return a.ss < b.ss;
}

void solve(){
    cin>>n>>m;
    int cnt = 0;
    vector<int> q;
    for(int i=1; i<=n; i++){
        cin>>a[i].ff>>a[i].ss;
        if(a[i].ss == -1) a[i].ss = 1e9;
        else cnt ++; 
    }
    sort(a + 1, a + 1 + n, cmp2);
    ld ans = 1e18;
    for(int D=0; D<=n; D++){
        for(int i=0; i<=n; i++){
            for(int j=0; j<=n; j++){
                dp[i][j] = ob[i][j] =   1e9;
            }
        }
        dp[0][0] = 0;
        for(int i=1; i<=n; i++){
            for(int d=0; d<=n; d++){
                for(int k=0; k<=n; k++){
                    ob[d][k] = min(ob[d][k], dp[d][k]);
                    ob[d][k + 1] = min(ob[d][k + 1], dp[d][k] + a[i].ff / (D + 1));
                    if(a[i].ss != 1e9) ob[d + 1][k + 1] = min(ob[d + 1][k + 1], dp[d][k] + a[i].ss / (d + 1));
                }
            }
            
            for(int i=0; i<=n; i++){
                for(int j=0; j<=n; j++){
                    dp[i][j] = ob[i][j];
                    ob[i][j] = 1e9;
                }
            }
        }
        ans = min(ans, dp[D][m]);

    }
    cout<<fixed<<setprecision(9)<<ans<<'\n';
}


signed main(){
    solve();
}
#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...