제출 #1269950

#제출 시각아이디문제언어결과실행 시간메모리
1269950Faggi사이버랜드 (APIO23_cyberland)C++20
0 / 100
3094 ms12360 KiB
#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()
#define fr first
#define se second
#define pb push_back
#define mp make_pair
using namespace std;

const int MAXN=1e5+1;

double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
    vector<double>dist(N,0);
    ll i, j;
    double act;
    for(i=0; i<M; i++)
        dist[min(x[i],y[i])]=c[i];
    vector<double>dis(K+1,0);
    for(i=0; i<H; i++)
    {
        vector<double>nd=dis;
        if(arr[i]==0)
        {
            for(j=0; j<=K; j++)
                nd[j]=0;
        }
        else if(arr[i]==2)
        {
            for(j=0; j<K; j++)
                nd[j+1]=min(dis[j]/double(2),nd[j+1]);
            
            if(i>0)
            {
                double act=dis[0];
                for(j=1; j<=K; j++)
                {
                    for(ll l=0; l<K; l++)
                    {
                        if(l+j>K)
                            break;
                        act=(dis[l]+dist[i-1]*j)/(2*j);
                        nd[l+j]=min(nd[j+l],act);
                    }
                }
            }
            if(i+1<H)
            {
                double act=dis[0];
                for(j=1; j<=K; j++)
                {
                    for(ll l=0; l<K; l++)
                    {
                        if(l+j>K)
                            break;
                        act=(dis[l]+dist[i]*j)/(2*j);
                        nd[l+j]=min(nd[j+l],act);
                    }
                }
            }
        }
        for(j=0; j<=K; j++)
            nd[j]=nd[j]+dist[i];
        dis=nd;
    }
    double mi=dis[0];
    for(j=1; j<=K; j++)
        mi=min(mi,dis[j]);
    return mi;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...