제출 #997204

#제출 시각아이디문제언어결과실행 시간메모리
997204VMaksimoski008Aliens (IOI16_aliens)C++17
25 / 100
6 ms16904 KiB
#include "aliens.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; int N, K; ll dp[4005][4005]; vector<pii> vec; void f(int l, int r, int tl, int tr, int j) { if(l > r) return ; int tm = (l + r) / 2; int p = tl; for(int i=tl; i<=min(tm, tr); i++) { ll v = dp[i-1][j-1] + (ll)(vec[tm].second - vec[i].first + 1) * (ll)(vec[tm].second - vec[i].first + 1); v -= (ll)(max(0, vec[i-1].second - vec[i].first + 1)) * (ll)(max(0, vec[i-1].second - vec[i].first + 1)); if(v < dp[tm][j]) { dp[tm][j] = v; p = i; } } f(l, tm-1, tl, p, j); f(tm+1, r, p, tr, j); } ll take_photos(int n, int m, int k, vector<int> r, vector<int> c) { //d&c gl hf vector<pii> P; P.push_back({ -1, -1 }); for(int i=0; i<n; i++) { if(r[i] > c[i]) P.push_back({ c[i], r[i] }); else P.push_back({ r[i], c[i] }); } sort(P.begin(), P.end(), [&](pii a, pii b) { if(a.first == b.first) return a.second > b.second; return a.first < b.first; }); vector<pii> P2; P2.push_back(P[0]); P2.push_back(P[1]); for(int i=2; i<=n; i++) { if(P[i].first <= P2.back().second && P[i].second <= P2.back().second) continue; P2.push_back(P[i]); } P = P2; n = P.size() - 1; N = n; K = k; vec = P; for(int i=0; i<=n; i++) for(int j=0; j<=k; j++) dp[i][j] = 1e9; dp[0][0] = 0; // for(int i=1; i<=n; i++) { // for(int j=1; j<=k; j++) { // for(int x=i; x>=1; x--) { // dp[i][j] = min(dp[i][j], dp[x-1][j-1] + (P[i].second - P[x].first + 1) * (P[i].second - P[x].first + 1) - max(0, (P[x-1].second - P[x].first + 1)) * max(0, (P[x-1].second - P[x].first + 1)) ); // } // } // } for(int j=1; j<=k; j++) f(1, n, 1, n, j); return *min_element(dp[n], dp[n]+k+1); }
#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...