Submission #756641

#TimeUsernameProblemLanguageResultExecution timeMemory
756641ByeWorldCyberland (APIO23_cyberland)C++17
19 / 100
32 ms7028 KiB
#include <bits/stdc++.h> #include "cyberland.h" #define ll long long #define fi first #define se second #define pb push_back using namespace std; const int MAXN = 1e5+10; const int MAXK = 35; const double INF = 1e16+10; const ll MOD = 1e9 + 7; const ll LOG = 20; typedef pair<int,int> pii; typedef pair<int,pii> ipii; int n, m, k, h; int ty[MAXN]; double dp[MAXK][MAXN]; vector <pii> vec; vector <pii> adj[MAXN]; bool dfs(int nw, int par){ if(nw == h) return 1; bool ada = 0; for(auto ed : adj[nw]){ int nx = ed.fi; int wei = ed.se; if(nx == par) continue; if(!dfs(nx, nw)) continue; vec.pb(pii(nw, wei)); //nw-nx = wei ada = 1; } return ada; } double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) { n = N; m = M; k = K; h = H; for(int i=0; i<=m-1; i++){ adj[x[i]+1].pb(pii(y[i]+1, c[i])); adj[y[i]+1].pb(pii(x[i]+1, c[i])); } for(int i=0; i<n; i++) ty[i+1] = arr[i]; //dji(); int en = h-1; int sta = 0; for (int i=en;i>=0;i--) { if (arr[i] == 0) { sta = i; break; } } /*for(auto in : vec)cout << in.fi << ' ' << in.se << "in\n"; cout << sta << ' ' << en << "sta\n"; return 0;*/ for(int i=sta; i<=en; i++){ //idx = sta-en for(int j=0; j<=k; j++) dp[j][i] = INF; } dp[0][sta] = 0; for(int j=0; j<=k; j++){ for(int i=sta; i<=en; i++){ double te1 = INF, te2 = INF, las = INF; if(sta < i && arr[i]==2 && j!=0) te1 = (dp[j-1][i-1]+c[i-1])/2; if(i < en && arr[i]==2 && j!=0) te2 = (dp[j-1][i+1]+c[i])/2; dp[j][i] = min(min(te1, te2), min(las, dp[j][i])); } for(int i=sta+1; i<=en; i++){ dp[j][i] = min(dp[j][i], dp[j][i-1]+c[i-1]); } for(int i=en-1; i>=sta; i--){ dp[j][i] = min(dp[j][i], dp[j][i+1]+c[i]); } } /*for(int i=sta; i<=en; i++){ for(int j=0; j<=k; j++) cout << dp[i][j] << ' '; cout << '\n'; }*/ double ans = INF; for(int i=0; i<=k; i++) ans = min(ans, dp[i][en]); return ans+c[en]; }
#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...