답안 #937330

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
937330 2024-03-03T21:18:49 Z Maite_Morale Let's Win the Election (JOI22_ho_t3) C++14
22 / 100
992 ms 837352 KB
    #include<bits/stdc++.h>
    #define F first
    #define S second
    #define MAX 500
    #define oo 1e6+7
    #define mod 1000000007
    #define fast_in ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);cout.setf(ios::fixed);cout.precision(3);
    using namespace std;
    typedef long long ll;
    typedef long double db;
    #define pll pair<ll , ll>
    #define vll vector<ll>
    #define vvll vector<vll>
    #define vpll vector<pll>
     
    ll t,n,mn[MAX],m,l[MAX];
    pll aux[MAX];
    db dp[MAX][MAX][MAX],cost[MAX];
    pair<db,db> a[MAX];
    int main(){
        fast_in
        cin>>n>>m;t=n;
        for(int i=0;i<n;i++){
            cin>>a[i].S>>a[i].F;
            if(a[i].F==-1){a[i].F=oo;t--;}
            aux[i]={a[i].S,a[i].F};
            mn[i]=a[i].S;
        }
        sort(a,a+n);sort(mn,mn+n);sort(aux,aux+n);
        ll s=0,top=m-1;
        for(int i=0;i<n;i++){
            aux[i]={aux[i].S,i};
            if(i<m)s+=mn[i];
            l[i]=i;
        }sort(aux,aux+n);
        for(int i=0;i<min(t,m);i++){
           cost[i]=s;
           if(aux[i].S<top){
              s-=mn[aux[i].S];
              if(aux[i].S>0)l[aux[i].S]=l[aux[i].S-1];
           }
           else{
              s-=mn[top];top=l[top-1];
           }
        }
        db r=cost[0];
        cost[m]=s;
        for(int k=0;k<=min(t,m);k++){
            for(int j=0;j<=k;j++){
                for(int i=0;i+k<=min(t,m);i++){
                    dp[i][j][k]=oo;
                    if(i+j==0)dp[i][j][k]=0;
                    if(i>0)dp[i][j][k]=min(dp[i][j][k],dp[i-1][j][k]+a[i+j-1].S/(k+1));
                    if(j>0)dp[i][j][k]=min(dp[i][j][k],dp[i][j-1][k]+a[i+j-1].F/j);
                  //  if(i>0)cout<<dp[i-1][j][k]<<"+"<<a[i+j-1].S/k<<".\n";
                  //  if(j>0)cout<<dp[i][j-1][k]<<"+"<<a[i+j-1].F/j<<"'\n";
                    if(j==k){
                    //    cout<<i<<" "<<k<<" "<<" "<<dp[i][k][k]<<"+"<<cost[i+k]<<"\n";
                        if(cost[i+k]==0)r=min(r,dp[i][j][k]);
                        else            r=min(r,dp[i][j][k]+cost[i+k]/(k+1));
                    }
                }
            }
        }
        cout<<r;
    return 0;
    }
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 6492 KB Output is correct
4 Correct 1 ms 8540 KB Output is correct
5 Correct 1 ms 10640 KB Output is correct
6 Correct 2 ms 12636 KB Output is correct
7 Correct 3 ms 14776 KB Output is correct
8 Correct 2 ms 10584 KB Output is correct
9 Correct 2 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 1 ms 10588 KB Output is correct
13 Correct 1 ms 10588 KB Output is correct
14 Correct 2 ms 10840 KB Output is correct
15 Correct 2 ms 14684 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 6492 KB Output is correct
4 Correct 1 ms 8540 KB Output is correct
5 Correct 1 ms 10640 KB Output is correct
6 Correct 2 ms 12636 KB Output is correct
7 Correct 3 ms 14776 KB Output is correct
8 Correct 2 ms 10584 KB Output is correct
9 Correct 2 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 1 ms 10588 KB Output is correct
13 Correct 1 ms 10588 KB Output is correct
14 Correct 2 ms 10840 KB Output is correct
15 Correct 2 ms 14684 KB Output is correct
16 Correct 1 ms 6492 KB Output is correct
17 Correct 3 ms 18876 KB Output is correct
18 Correct 2 ms 18780 KB Output is correct
19 Correct 5 ms 29020 KB Output is correct
20 Correct 4 ms 29028 KB Output is correct
21 Correct 5 ms 29020 KB Output is correct
22 Correct 5 ms 31324 KB Output is correct
23 Incorrect 4 ms 31324 KB Output isn't correct
24 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 1 ms 4444 KB Output is correct
3 Correct 1 ms 6492 KB Output is correct
4 Correct 1 ms 8540 KB Output is correct
5 Correct 1 ms 10640 KB Output is correct
6 Correct 2 ms 12636 KB Output is correct
7 Correct 3 ms 14776 KB Output is correct
8 Correct 2 ms 10584 KB Output is correct
9 Correct 2 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 1 ms 10588 KB Output is correct
13 Correct 1 ms 10588 KB Output is correct
14 Correct 2 ms 10840 KB Output is correct
15 Correct 2 ms 14684 KB Output is correct
16 Correct 1 ms 6492 KB Output is correct
17 Correct 3 ms 18876 KB Output is correct
18 Correct 2 ms 18780 KB Output is correct
19 Correct 5 ms 29020 KB Output is correct
20 Correct 4 ms 29028 KB Output is correct
21 Correct 5 ms 29020 KB Output is correct
22 Correct 5 ms 31324 KB Output is correct
23 Incorrect 4 ms 31324 KB Output isn't correct
24 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 944 ms 836100 KB Output is correct
2 Correct 992 ms 837352 KB Output is correct
3 Correct 964 ms 835540 KB Output is correct
4 Correct 895 ms 835064 KB Output is correct
5 Correct 883 ms 835180 KB Output is correct
6 Correct 858 ms 834368 KB Output is correct
7 Correct 847 ms 834520 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -